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

基于rms包的限制性立方样条回归(RCS)R代码实现

RCS

2301_79584199的博客 2万+

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

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

m0_67402235的博客 1435

通俗解析:霍尔编码器、光电编码器、电位计、磁编码器和旋转变压器的实战选型指南

本文深入解析了霍尔编码器、光电编码器、电位计、磁编码器和旋转变压器五大主流编码器的工作原理与核心特性。通过对比精度、环境耐受性、成本及寿命等关键维度,并结合消费电子、工业自动化、汽车电子及极端环境等典型应用场景,提供了一份清晰的实战选型指南,旨在帮助工程师根据具体需求,在性能、可靠性与成本间做出最优决策。

weixin_29216353的博客 253

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

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

君当自强 1万+

校园网改造实录:手把手教你用华为MA5800 OLT调试全光网(附常用排错命令)

本文详细记录了校园全光网改造中华为MA5800 OLT的部署与调试过程,涵盖设备选型、基础配置、ONU批量部署及高频故障排查。通过实战案例和排错命令,帮助网络工程师快速掌握全光网调试技巧,实现低延迟、高稳定的网络性能。

weixin_42552716的博客 573

【Hypermesh】TetraMesh Panel 常用选项详解

结合Hypermesh 2020 帮助文档和自己的一点使用经验,整理了这个博客。

qgm1702的博客 3676

搭建SpringBoot+Dubbo微服务实践

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

wlmvp的博客 1341

Isaac Lab强化学习实战:用SO-ARM101机械臂实现抓取任务(附B站视频教程)

本文详细介绍了如何使用Isaac Lab强化学习框架,在SO-ARM101机械臂上实现抓取任务的完整实战流程。内容涵盖从环境搭建、奖励函数设计、训练调参到模型部署的各个环节,并分享了Sim-to-Real迁移的关键技巧,旨在帮助开发者高效完成机器人强化学习项目。

weixin_29070721的博客 1101

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

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

xybest.com 2315

外贸英文函电第三版张梅英课后习题答案解析

我参加了一些外贸模拟竞赛,将所学知识运用到实际工作中,取得了不错的成绩。此外,我还积极参与了一些外贸实践活动,如参加实习、担任志愿者等,从中积累更多的经验。在这个过程中,我逐渐摸索出了一套适合自己的学习方法,不仅提高了学习效果,还增强了自信心。通过学习这本书,我们可以提高自己在外贸领域的沟通能力,更好地应对未来的工作挑战。在学习这本书的过程中,我遇到了一些困难,比如对某些专业术语的理解不够透彻,对信件的结构和格式掌握不够熟练。出版社: 高等教育出版社。上传者: ʚ河西撒手没ɞ。

weixin_58833001的博客 1425

Maestro 薛定谔软件简单分子对接案例

#参考:Maestro 薛定谔软件使用:Maestro 薛定谔对接:sid=287811。

weixin_42357472的博客 1万+

SpringBoot+Dubbo构建微服务

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

疯一样的女子 3899

【Unity 实用工具篇】✨| 受击插件Feel 详细教程,开发游戏时更好的操控 游戏打击感

在一个游戏中,游戏手感对于游戏的整体游玩体验是非常重要的,而游戏手感中有一个很重要的点:打击感 那本篇文章就来讲一下打击感中的受击反馈部分。 在游戏中经常会用到攻击敌人,敌人扣血,执行某些受击功能的执行,尤其是对于有战斗场景的游戏来说,这就是标准的受击反馈。 所以引出本篇文章的主角:受击插件 Feel 的使用,2D和3D游戏都可以使用。

努力前行,总会成为自己心中的那道光 3万+

SpringBoot整合Dubbo

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

冰冰凉的博客 8327

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

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

qq_41497111的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

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

梵心白莲的博客 1513

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: 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、付费专栏及课程。

余额充值