开箱即用的Dubbo模版
开箱即用的Dubbo模版
前言
近期做的项目是一个采用Dubbo
架构的微服务项目,由于之前虽然学习过Dubbo
架构但是一直没有机会独自搭建过,于是趁着这个机会凭借着自己浅薄的理解自己完整地搭建了一个开箱即用的spring-dubbo-demo
。
正文
开箱即用的Dubbo模版
这里简单介绍一下这个项目的的结构
spring-dubbo-demo
-
spring-dubbo-api
:这个模块主要存放对外提供的dubbo
接口。 -
spring-dubbo-common
:存放着一些常用的工具类、自定义标签、枚举类等。 -
spring-dubbo-dao
:提供数据访问模块,比如mysql
数据库。 -
spring-dubbo-middleware
:用于连接消息中间件,如消息队列。 -
spring-dubbo-gateway
:项目的网关模块,用于负载均衡、限流等。 -
spring-dubbo-producer
:模拟producer
业务模块。 -
spring-dubbo-comsumer
:模拟comsumer
业务模块。
根据项目中各个模块的关系,简单描绘了这个项目的架构图:
项目的技术栈
Nacos服务治理中心和配置中心
Nacos提供了四个主要功能
-
服务发现和服务运行状况检查(服务治理):
Nacos
使服务易于注册自己并通过DNS
或HTTP
接口发现其他服务。Nacos
还提供服务的实时运行状况检查,以防止向不正常的主机或服务实例发送请求。 -
动态配置管理:动态配置服务使您可以在所有环境中以集中和动态的方式管理所有服务的配置。
Nacos
消除了在更新配置时重新部署应用程序和服务的需求,这使配置更改更加有效和敏捷。 -
动态
DNS
服务:Nacos
支持加权路由,使您可以更轻松地在数据中心内的生产环境中实施中间层负载平衡,灵活的路由策略,流控制和简单的DNS解析服务。它可以帮助您轻松实现基于DNS
的服务发现,并防止应用程序耦合到特定于供应商的服务发现API。 -
服务和元数据管理(分布式配置):
Nacos
提供了易于使用的服务仪表板,可帮助您管理服务元数据,配置,kubernetes DNS
,服务运行状况和指标统计信息。
Nacos既可以作为服务治理中心(可以替代 Spring Cloud Eureka
)也可以作为配置中心(可替代 Spring Cloud Config
)。
Nacos作为一个单独的服务进行部署,不需要用户搭建项目作为服务治理节点。
具体的使用可参考我的博客:Nacos服务治理中心和配置中心
Gateway微服务网关
Gateway提供了一个用于在Spring MVC
之上构建API
网关的库。Spring Cloud Gateway
旨在提供一种简单而有效的方法来路由到API
,并为它们提供跨领域的关注点,例如:安全性,监视/指标和弹性。
Spring Cloud Gateway
可以实现以下功能:
- 建立在
Spring Framework 5
,Project Reactor
和Spring Boot 2.0
之上 - 能够匹配任何请求属性上的路由。谓词和过滤器特定于路由
-
Hystrix
断路器集成 -
Spring Cloud DiscoveryClient
集成 - 易于编写的谓词和过滤器
- 请求速率限制,即限流
- 路径改写
具体的使用可参考我的博客:微服务网关-Gateway
ElasticJob分布式定时器
ElasticJob是一种分布式调度解决方案,由两个单独的项目ElasticJob-Lite
和ElasticJob-Cloud
组成。
通过灵活的调度,资源管理和作业管理功能,它创建了适合Internet
场景的分布式调度解决方案,并通过开放式架构设计提供了多元化的作业生态系统。它为每个项目使用统一的作业API
。开发人员只需要一次编写代码,就可以随意部署。
具体的使用可参考我的博客:Elastic-job实现分布式定时任务
RocketMQ消息队列
Apache RockerMQ是一个分布式消息传递引擎,轻量级的数据处理平台。
它具有以下的特性:
- 低延迟: 高压下在1毫米内响应延迟超过99.6%。
- 财务导向:具有跟踪和审核功能的高可用性。
- 产业可持续发展:万亿级消息容量。
- 大数据友好:具有通用集成功能的批处理传输实现大批量吞吐。
- 兼容性好:提供开放式分布式消息传递和流传输标准。
- 万亿级容量:给定足够的磁盘空间,可以在不损失性能的情况下累计邮件。
具体的使用可参考我的博客:SpringBoot整合RocketMQ实现消息队列
knife4j接口调试
knife4j是为Java MVC
框架集成Swagger
生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,
具有小巧,轻量,并且功能强悍的优点。
Knife4j提供两大核心功能:文档说明 和 在线调试
-
文档说明:根据
Swagger
的规范说明,详细列出接口文档的说明,包括接口地址、类型、请求示例、请求参数、响应示例、响应参数、响应码等信息,使用swagger-bootstrap-ui
能根据该文档说明,对该接口的使用情况一目了然。 -
在线调试:提供在线接口联调的强大功能,自动解析当前接口参数,同时包含表单验证,调用参数可返回接口响应内容、
headers
、Curl
请求命令实例、响应时间、响应状态码等信息,帮助开发者在线调试,而不必通过其他测试工具测试接口是否正确,简洁、强大。
具体的使用可参考我的博客:SpringBoot使用knife4j进行在线接口调试
源码
项目源码可从的我的github中获取:github源码地址