springboot+dubbo微服务架构的初级搭建

使用SpringBoot+Dubbo搭建微服务笔记 一、Dubbo介绍 引用官方的一段介绍 Apache Dubbo (incubating) |ˈdʌbəʊ| is a high-performance, java based RPC framework open-sourced by Alibaba. As in many RPC systems, dubbo is based around the idea of defining a... 阅读详情

最近由于项目赶工以及个人私事处理比较多,更新满了下来,前段时间有朋友想了解下微服务架构,然后我结合上家公司的组织架构搭建了一套微服务的初级架构,日志记录使用logback。微服务是近来比较火的词,微服务的提出到现在也没有多长时间,但是发展很迅速。微服务强调一个微字,就是要小,可以单独提供服务,已满足一些企业的日常需求,微服务维护方便,是拆分型的,和传统的单项目相比单项目代码量大,维护不宜,耦合性高,写作开发容易冲突等,关于微服务的好处我就不再多说了。目前流行的微服务架构dubbo,springcloud等,我使用的是springboot+dubbo+mybatis进行组合搭建。

项目组织架构层级:

首先先构思下具体的层级关系,可以用图的方式一目了然:


根据构思的层级关系可以构建项目目录如下:


项目搭建

1.配置配置文件

web,service, job等都可以单独发布所以每一个都有自己的application.yml,在需要启动服务的application.yml中先配置基本信息:

spring:
  profiles : dev
  datasource:
     ztm: 
      url: jdbc:mysql://127.0.0.1:3306/springbootdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false
      username: root
      password: root
      driver-class-name: com.mysql.jdbc.Driver
      minIdle: 1
      maxActive: 2
      initialSize: 1
      timeBetweenEvictionRunsMillis: 3000
      minEvictableIdleTimeMillis: 300000
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
  dubbo:
    application:
      name
    registry:
      address: zookeeper://127.0.0.1:2181
    protocol:
      name: dubbo
      port: 20880
    scan: com.demo.service
server:
  port: 8084       
logging: 
  file: ${user.home}/logs/demo/demo.log
  level:
    root: INFO
    
mybatis:
  basePackage: com.zto
  ztm:
    mapperLocations: classpath*:com/demo/mapper//*.xml
    typeAliasesPackage: com.demo.domain

把数据库的基本信息以及dubbo服务的提供者以及项目的启动端口进行配置。

2.首先把工具层构建好

json的工具类,http接口的工具类以及其他需要使用的工具类先构建,后续有新增的都加到这个conmmon子项目中去,由其他去调用

3.构建数据库持久层

/**
 * 
 * @ClassName: DruidConfiguration
 * @Description: 配置数据源datasource
 *
 */
@Configuration
public class DruidConfiguration {

	@Bean(name = "ztm", initMethod = "init", destroyMethod = "close")
	public DataSource compare2DataSource(
			@Value("${spring.datasource.ztm.driver-class-name}") String driver,
			@Value("${spring.datasource.ztm.url}") String url,
			@Value("${spring.datasource.ztm.username}") String username,
			@Value("${spring.datasource.ztm.password}") String password,
			@Value("${spring.datasource.ztm.minIdle}") int minIdle,
			@Value("${spring.datasource.ztm.maxActive}") int maxActive,
			@Value("${spring.datasource.ztm.initialSize}") int initialSize,
			@Value("${spring.datasource.ztm.timeBetweenEvictionRunsMillis}") long timeBetweenEvictionRunsMillis,
			@Value("${spring.datasource.ztm.minEvictableIdleTimeMillis}") long minEvictableIdleTimeMillis,
			@Value("${spring.datasource.ztm.validationQuery}") String validationQuery,
			@Value("${spring.datasource.ztm.testWhileIdle}") boolean testWhileIdle,
			@Value("${spring.datasource.ztm.testOnBorrow}") boolean testOnBorrow,
			@Value("${spring.datasource.ztm.testOnReturn}") boolean testOnReturn) {
		DruidDataSource druidDataSource = new DruidDataSource();
		druidDataSource.setDriverClassName(driver);
		druidDataSource.setUrl(url);
		druidDataSource.setUsername(username);
		druidDataSource.setPassword(password);
		druidDataSource.setMinIdle(minIdle);
		druidDataSource.setMaxActive(maxActive);
		druidDataSource.setInitialSize(initialSize);
		druidDataSource
				.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
		druidDataSource
				.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
		druidDataSource.setValidationQuery(validationQuery);
		druidDataSource.setTestWhileIdle(testWhileIdle);
		druidDataSource.setTestOnBorrow(testOnBorrow);
		druidDataSource.setTestOnReturn(testOnReturn);
		return druidDataSource;
	}

}
@Configuration
@MapperScan(basePackages = { "com.demo.mapper.ztm" }, sqlSessionFactoryRef = "ztmSqlSessionFactory")
public class ZtmMybatisConfiguration {

	@Autowired
	@Qualifier("ztm")
	private DataSource dataSource;
	
	@Bean(name = "ztmSqlSessionFactory")
	public SqlSessionFactoryBean sqlSessionFactory(@Value("${mybatis.ztm.mapperLocations}") String mapperLocations, 
			@Value("${mybatis.ztm.typeAliasesPackage}")String typeAliasesPackage) throws Exception {
		SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
		sessionFactoryBean.setDataSource(dataSource);
		sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
		sessionFactoryBean.setTypeAliasesPackage(typeAliasesPackage);
		return sessionFactoryBean;
	}

	@Bean(name = "ztmTransactionManager")
	public DataSourceTransactionManager transactionManager() {
		return new DataSourceTransactionManager(dataSource);
	}
}

目录结构如下:


4.dao层构建

dao的调用持久层进行处理为上级提供方法和服务的层级


5.service层构建

service可以单独启动对外暴露服务,所以有自己的启动类和配置文件,是服务的高层,其上层还有web,同样的job,mobile以及broker等同级层级和servcie的构建相同

6.视图层web构建

视图层构建和service方法相同,不过其pom.xml中会引用其下级使用的层级,并配合一些前端模版进行视图展示


7.dubbo的整合

在配置文件application.yml中配置了dubbo的相关配置以后,咱们引用的dubbo的服务jar以及注册中心使用的zk引用为:

<dependency>
		    <groupId>com.github.sgroschupf</groupId>
		    <artifactId>zkclient</artifactId>
		    <exclusions>
		        <exclusion>
		            <artifactId>log4j</artifactId>
		            <groupId>log4j</groupId>
		        </exclusion>
		    </exclusions>
		</dependency>
		<dependency>
            <groupId>io.dubbo.springboot</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
            <version>1.0.0</version>
        </dependency>

有了这些就可以在来对外暴露服务了:

@Service(version="1.0.0")
public class UserServiceimpl implements UserService{
	@Autowired
	private UserBiz biz;
	
	@Override
	public User getById(Integer id) {
		
		return biz.getById(id);
	}

}

这样在项目启动的时候服务就会被注册到注册中心zk,如果启动dubbo控制台就可以在dubbo控制台中看到一个无消费的服务

,有了服务提供者,下面在来一个服务消费者,首先配置配置文件:

 dubbo:
    application:
      name
    registry:
      address: zookeeper://127.0.0.1:2181
    scan: com.demo.controller

对服务进行消费:

@RestController
@Component
public class UserController {
	

    @Reference(version = "1.0.0")
    private UserService userService;
	@RequestMapping(value="/{id}",method=RequestMethod.GET)
	public User getById(@PathVariable Integer id) {
		
		return userService.getById(id);
	}


}

至此就把服务提供和消费者搞定了,框架的大致也有了,后面会加入一些前端框架和一些nosql的技术来填充,比如redis,mq等。有什么疑问或不对的,欢迎提出。

springboot整合dubbo(无xml):https://blog.youkuaiyun.com/helloword_monkey/article/details/78939072

0基础教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins) 本文你将学到什么? 本文将以原理+实战的方式,首先对“微服务”相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统。 项目完整源码下载 https://github.com/bz51/SpringBoot-Dubbo-Docker-Jenkins 这套微服务框架能干啥? 这套系统搭建完之后,那可就厉害了: 微服务架构 你的整个应用程序将会被拆分成一个个功... 阅读详情

相关推荐

Springboot整合dubbo(一):搭建一个springboot + dubbo的微服务

现在越来越多的公司开发项目中使用了springboot作为搭建服务的框架,因为springboot集成了一套完整项目所需要的基本的开发工具的jar包,无需再像之前开发一个spring项目中需要引入各种配置,只需要引入简单的几个配置就能达到项目的启动,大大减少了开发周期,使开发越来越便捷,而dubbo是一款国内使用较多的SOA架构开发的中间件,其主要由三个部分组成:生产者,消费者,注册中心。注册中心一般使用的是zookeeper。于是我们从头来捋一捋如何搭建一个springboot+dubbo项目。

rita_0567的博客 1668

Springboot整合Dubbo

一、环境的安装 1、zookeeper环境搭建: (1).官网下载zookeeper后得到压缩文件,解压后打开解压文件,进入该目录; (2).进入zookeeper-3.4.11\conf 将里面的zoo_sample.cfg重新复制一份,并改名为zoo.cfg 并且我们打开该文件,可以看见zookeeper的默认端口号为2181 (3).进入bin目录,执行zkServer.cmd zkCli.cmd 启动zookeeper服务 2、Dubbo控制台admin和监控中心的环境.

weixin_44525837的博客 2685

微服务架构(Dubbo+Zookeeper)

而且,对于服务提供方和服务消费者来说,还有可能兼具这两种角色,即需要提供服务,又需要消费服务,通过统一管理起来,可以有效地优化内部应用对服务发布/使用的流程的管理,服务注册中心可以通过特定协议来完成服务对外的统一。RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。对于服务消费方,最关心如何获取到它所需要的服务,而面对复杂的应用系统,需要管理大量的服务调用。

qq_51476492的博客 1837

dubbo+spring boot搭建微服务 demo

dubbo+spring boot搭建微服务 demo 最近比较流行服务化架构,服务化架构比较主流的实现有SOA和微服务。这里我使用分布式服务框架dubbo和spring boot做简单的集成demo。 在微服务框架中有两个角色:是服务的提供者(provider),服务消费者(consumer)。 一个服务既可以是服务提供者同时也可以是服务消费者。 搭建步骤 创建spring boot 项目 ,...

寂寞的搬运工的博客 1082

IDEA搭建springBoot+Dubbo+zookeeper+Mybatis微服务框架

IDEA搭建springBoot+Dubbo+zookeeper+Mybatis微服务框架 文章参考地址:https://www.cnblogs.com/gaopengfirst/ 先准备zookeeper。下载解压后进入bin目录点击zkServer.cmd启动。这里不多说了,百度一大堆。 新建一个Maven项目 下面是父工程的pom.xml <?xml version="1.0" en...

Stay_calm的博客 2832

【实战指南】SpringBoot结合Zookeeper/Nacos构建Dubbo微服务

Nacos整合Dubbo能够提供动态服务发现、配置管理和服务治理,简化了微服务间的通信和管理,提升了开发效率和系统可维护性。而Zookeeper与Dubbo结合,利用其分布式协调服务特性,保证了服务注册与发现的高可用性和一致性,增强了系统的稳定性和故障恢复能力。两者皆为Dubbo生态提供了强大的支撑,促进了分布式系统的健壮性和灵活性。

qq_45515182的博客 2451

手把手教你使用Springboot整合dubbo,搭建一个微服务

由于dubbo的注册中心用的是zookeeper,所以首先需要。

lianaozhe的博客 8756

Springboot + Dubbo + Nacos微服务框架整合

背景 注册中心Eureka2闭源,zk复杂的paxos一致性算法、假死脑裂、无管理控制台不方便管理等问题,以下文中使用到nacos作为注册中心,作为配置中心后续介绍(对比参考:https://blog.youkuaiyun.com/Mr_Errol/article/details/84938993)。 参考:阿里巴巴为什么不用 ZooKeeper 做服务发现? Springboot+Dubbo+Naco...

u014732209的博客 1万+

springboot集成dubbo(详细配置)

前言: 首先要搭建zookeeper环境并启动,可参照window下搭建zookeeper_半生归来仍少年的博客-优快云博客 资源下载: dubbo-admin-2.5.8.war:dubbo-admin-2.5.8.war-互联网文档类资源-优快云下载 apache-zookeeper.zip:apache-zookeeper.zip-互联网文档类资源-优快云下载 1.新建项目dubboapi(接口服务) 1.1.说明:该项目是存放调用的接口 项目结构大致如下 1.2.po.

qq_42756258的博客 5067

springboot+dubbo完整项目案例

该项目代码,是我自己整理的一套springboot+dubbo开发的一个案例,基本的生产者消费者注册中心都已经开发好了,其中dubbo-admin需要自行打包运行

Kubernetes集群环境搭建与初始化

Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

m0_75254642的博客 1524

全网最透彻!Dubbo整合SpringBoot详解,又通宵了

目前的dubbo已支持和springboot集成,还是之前的例子,这次我们通过springboot容器来实现。借此了解一下基于springboot容器启动的dubbo的配置及使用。

m0_67402235的博客 1435

SAP 财务接口开发:完全清账 vs 标准过账的 CO-PA(获利能力字段) 赋值全解析(含设计哲学)

用于完全清账场景:用于标准凭证过账/部分清账两者对 CO-PA 数据的传递方式截然不同。本文不仅提供完整的代码实现,更深入解析为什么 SAP 要这样设计——了解设计哲学,才能灵活应对各类需求。完全清账→ 调用,必须在T_FTPOST中传递,其他特征用BSEG-RKE_前缀。标准过账/部分清账→ 调用,在CRITERIA表中传递特征,字段名直接用WERKSARTNR等。SAP 的设计智慧面向不同场景,采用不同机制,各司其职。通过接口抽象,将复杂的 CO-PA 配置逻辑封装在内部,对外提供简洁的调用方式。

Pegasus666的博客 328

IDEA基于springboot采用Dubbo+zookeeper+Redis搭建微服务项目-详细教程

首先创建一个空的项目: 命名MicroServiceDemo,finish。 new window 创建模块,在这里每个模块都采用SpringBoot项目,但是不引入任何其他组件。

君当自强 1万+

解决2020R2,2022R1等版本的SCDM无法编辑草图尺寸的问题

解决2020R2,2022R1等版本的SCDM无法编辑草图尺寸的问题

y_u_yu_yu_的博客 1万+

163种中草药图像数据集构建与ResNet-50迁移学习实战指南

在计算机视觉领域,高质量标注数据集是模型训练的基石,直接影响图像分类、目标检测等任务的性能。其核心原理在于为算法提供结构化的监督信号,通过深度学习模型学习从像素到语义的映射关系。构建此类数据集的技术价值在于解决了特定垂直领域(如中医药)数据稀缺的痛点,为AI技术落地提供了关键“燃料”。在应用场景上,标准化数据集广泛支撑着教学演示、算法验证和产业应用开发。本文聚焦于中草药识别这一细分领域,详细介绍了一个包含163种常见药材、经过多源聚合与清洗的图像数据集构建全过程,并提供了基于PyTorch和ResNet-5

weixin_33672400的博客 454

搭建SpringBoot+Dubbo微服务实践

一、Dubbo介绍 Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 Dubbo是阿里出的一个高性能的分布式微服务框架,它的特点是性能高、界面友好、文档齐全(特别是中文文档),是很多中小型公司快速搭建微服务的首选技术。前段时间被阿里重新进行...

wlmvp的博客 1341

3D-IC测试挑战与Tessent解决方案解析

3D-IC技术通过硅通孔(TSV)实现芯片垂直堆叠,是延续摩尔定律的关键路径。该技术面临三大核心挑战:KGD标准严苛化要求测试覆盖率达99.5%以上,存储器测试需兼容LPDDR/HBM等多种协议,逻辑堆叠需解决TSV互连的电气特性和时序验证问题。Mentor Tessent平台采用混合测试架构,结合压缩扫描测试(ATPG)和内建自测试(BIST)技术,实现100x测试数据压缩比和99.97%的TSV缺陷检出率。这些创新方案在移动SoC和高性能计算芯片中已获验证,测试时间缩短73%,缺陷逃逸率降低77%。随着

weixin_30621711的博客 376

SpringBoot+dubbo+zookeeper搭建微服务分布式架构

SpringBoot+dubbo+zookeeper搭建微服务分布式结构 项目架构的演进 三层构–>分布式架构 -->服务架构(SOA)–>微服务分布式架构(简称:微服) 什么是分布式? 通俗就是把一个东西拆解成多个模块,我们这里把程序进行拆分模块,把每个模块部署到不同的服务器上进行工作,让他们远程相互调用,形成依赖,降低程序的耦合度,提高程序的内部性能为目的一种解决方式 常见的微服务分布式架构解决方案: 借助Dubbo+Zookeeper(基于rpc协议的调用) SpringClo.

xybest.com 2315

五、2K0300 久久派开发板的GPIO控制与Shell脚本自动化实战

本文详细介绍了基于龙芯2K0300处理器的久久派开发板的GPIO控制方法,通过sysfs文件系统实现LED控制和传感器读取。重点讲解了Shell脚本自动化实战,包括LED闪烁、流水灯效果和传感器数据采集,为物联网项目开发提供完整解决方案。

silver的专栏 687

PyTorch实战:卷积神经网络详解+Python实现卷积神经网络Cifar10彩色图片分类

PyTorch可以说是三大主流框架中最适合初学者学习的了,相较于其他主流框架,PyTorch的简单易用性使其成为初学者们的首选。这样我想要强调的一点是,框架可以类比为编程语言,仅为我们实现项目效果的工具,也就是我们造车使用的轮子,我们重点需要的是理解如何使用Torch去实现功能而不要过度在意轮子是要怎么做出来的,那样会牵扯我们太多学习时间。以后就出一系列专门细解深度学习框架的文章,但是那是较后期我们对深度学习的理论知识和实践操作都比较熟悉才好开始学习,现阶段我们最需要的是学会如何使用这些工具。

master_hunter的博客 8933

SpringBoot+Dubbo构建微服务

随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。 一、先来一张图 说起 Dubbo,相信大家都不会陌生!阿里巴巴公司开源的一个高性能优秀的服务框架,可以使得应用可通过高性能的 RPC 实现服务的输出和输入功能,同时可以和 Spring 框架无缝集成。 Dubbo 架构图 节点角色说明: Provider:暴露服务的服务提供方 Consumer:调用远程服务的服务消费方 Reg..

疯一样的女子 3899

30天入门Python(办公篇)——第34天:pandas - 数据处理与分析利器

摘要 本文介绍了Python数据分析库pandas的核心功能,包括数据结构和基本操作。主要内容涵盖:1) Series和DataFrame两种核心数据结构的创建与使用;2) 多种文件格式的读写方法;3) 数据查看、筛选和清洗技巧;4) 基础统计分析功能;5) 数据透视表和交叉表制作;6) 数据排序与合并等变换操作。文章通过大量代码示例演示了pandas在数据处理各环节的应用,适合作为pandas入门的实践指南,帮助读者快速掌握这一强大工具的基本使用方法。

weixin_42636075的博客 303

SpringBoot整合Dubbo

SpringBoot整合Dubbo & zookeeper & Dubbo-admin 一、分布式概述 发展演变 1.1 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。适用于小型网站,小型管理系统,将所有功能都部署到一个功能里,简单易用。 缺点 性能扩展比较难 协同开发问题 不利于升级维护 1.2 垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互

冰冰凉的博客 8327

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SpringCloud 与 SpringBoot 微服务 架构 | 面试题及答案详解

目录 1.什么是微服务? 2.微服务之间如何独立通讯的? 3.SpringCloud 和 Dubbo 有哪些区别? 4.SpringBoot 和 SpringCloud 之间关系? 5.什么是熔断?什么是服务降级? 6.微服务的优缺点是什么?说下你在项目中碰到的坑。 7.eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别? 8.你所知道微服务的技术栈有...

qq_41497111的博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

微服务架构下的SpringBoot实践:Nacos+Dubbo3整合方案

在当今的软件开发领域,微服务架构已经成为构建大型、复杂应用系统的主流架构模式。Spring Boot 作为一个快速开发框架,极大地简化了 Spring 应用的搭建和开发过程。而 Nacos 作为阿里巴巴开源的动态服务发现、配置管理和服务管理平台,以及 Dubbo3 作为高性能的分布式服务框架,它们的结合可以为微服务架构提供强大的支持。本文将详细介绍如何在 Spring Boot 项目中整合 Nacos 和 Dubbo3,实现高效的微服务架构。

梵心白莲的博客 1513

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: springboot整合dubbo(注册中心zookeeper)无xml
下一篇: easyui加载慢
code_slave(码畜)
博客等级 码龄10年 31粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值