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需要自行打包运行

CanMV K230实战:用MicroPython玩转AI视觉识别(附完整代码)

本文详细介绍了如何使用MicroPython在CanMV K230开发板上实现AI视觉识别,包括环境搭建、摄像头配置、模型部署及优化技巧。通过实战案例(如智能门禁和工业分拣机器人),展示如何快速开发低门槛的嵌入式AI应用,特别适合初学者和嵌入式开发者。

x8y9z0的博客 1142

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

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

m0_67402235的博客 1435

中职网络安全2021年国赛Wireshark流量分析题目解析

中职网络安全Wireshark流量分析题目解析

FRANXX_02的博客 6442

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

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

君当自强 1万+

Android架构中UseCase的设计原则与实战解析

本文深入解析Android架构中UseCase的设计原则与实战应用,探讨其在Domain Layer中的核心作用。通过对比ViewModel的臃肿问题,详细阐述UseCase的无状态原则、单一职责边界等设计铁律,并提供多种实现方式的代码示例,帮助开发者构建更清晰、高效的Android应用架构。

weixin_28432777的博客 431

RK3588s Camera ISP调优详解(一)ISP调试工具及环境配置(附下载途径)

本文主要介绍了rkisp tuner工具的连接与使用,并附上了工具及依赖库的下载地址

zongheng_raobo的博客 6270

搭建SpringBoot+Dubbo微服务实践

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

wlmvp的博客 1341

OpenClaw实战系列03:Slack/Telegram国际版接入实战指南

在当今的软件开发和工作流自动化中,将项目管理工具与即时通讯平台集成已成为提高团队协作效率的关键。OpenClaw作为一个开源的自动化工具,通过接入Slack和Telegram国际版,可以实现实时通知、自动化任务触发和团队协作的无缝对接。本文将详细介绍如何实现OpenClaw与这两个主流即时通讯平台的集成。OpenClaw是一个开源的自动化工作流引擎,支持多种触发器和执行器,能够帮助开发团队实现CI/CD流程、任务调度、监控告警等自动化场景。模块化设计:支持插件化扩展多触发器支持。

PeterPan的博客 586

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

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

xybest.com 2315

【数据同化第一期】基本概念介绍

【数据同化第一期】基本概念介绍

WW、forever的博客 1904

在 ABAP Cloud 中玩转 CL_ABAP_PARALLEL 并行处理:从原理到实战

ABAP并行处理框架CL_ABAP_PARALLEL解析 本文系统介绍了SAP ABAP环境中实现并行处理的CL_ABAP_PARALLEL框架。该框架通过封装异步RFC和对话进程,为开发者提供了面向对象的API,显著提升大批量数据处理的效率。 文章首先分析了ABAP环境需要并行处理的原因:传统的串行处理在面对百万级数据时效率低下。然后详细介绍了CL_ABAP_PARALLEL的设计思路,它是一个"小型线程池"式的同步并行框架,适用于批量计算场景。此外,文章重点讲解了控制并行任务的关键参

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 339

SpringBoot+Dubbo构建微服务

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

疯一样的女子 3899

搬运机器人系列编程:KUKA KR QUANTEC_(2).KUKA KRL语言编程基础

定义一个函数END!调用函数PRINT "结果: ", result!定义一个过程PRINT msgEND!调用过程printMessage("欢迎使用 KUKA 机器人")!定义搬运零件的起始位置和目标位置!定义焊接路径的各个点!定义喷涂路径的各个点KUKA Robot Language (KRL) 是一种专门为工业机器人设计的编程语言,具有结构化编程、丰富的库函数、实时性以及集成性等特点。

zhubeibei168的博客 1246

SpringBoot整合Dubbo

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

冰冰凉的博客 8327

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

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

qq_41497111的博客 1万+

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

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

微服务架构下的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、付费专栏及课程。

余额充值