springboot@dubbo融合
作者:互联网
springboot@dubbo融合
https://blog.csdn.net/myjess/article/details/114729793
http://localhost:9991//hello1
消费者
server.port=9991
dubbo.application.name=gmall-consumer
dubbo.registry.protocol=zookeeper
dubbo.registry.address=192.168.89.137:2181
dubbo.scan.base-package=cn.com
dubbo.protocol.name=dubbo
## 从注册中心自动去找
dubbo.monitor.protocol=registry
@EnableDubbo
客户端调用
@DubboReference
UserService userService;
提供者
dubbo.application.name=gmall-provider
dubbo.registry.protocol=zookeeper
dubbo.registry.address=192.168.89.137:2181
dubbo.scan.base-package=cn.com.service.dubboService
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
## 从注册中心自动去找
dubbo.monitor.protocol=registry
@EnableDubbo
发布服务
@DubboService
@Service
public class UserServiceImpl implements UserService {
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.10.0</version>
</dependency>
提供者: 如果60s内没有接收到消息,则发送心跳消息,如果连续三次(180s)没有接收到消息,则关闭channel。
消费者: 如果在60s内没有接收到消息,则发送心跳消息,如果连着三次没有收到心跳消息,消费者就会重连。
https://dubbo.apache.org/zh/docs/v2.7/user/references/xml/dubbo-registry/
提供者
<bean id="demoServiceXmh" class="server.imp.DemoServiceImpl" ></bean>
<dubbo:application name="dubbo-xmh" />
<dubbo:registry protocol="zookeeper" address="192.168.1.105:2181" id="xmhDubboProvider" subscribe="false" check="true"/>
<dubbo:service timeout="8000" interface="server.DemoService" ref="demoServiceXmh" registry="xmhDubboProvider"/>
1,dubbo:registry 标签一些属性的说明:
1) register 是否向此注册中心注册服务,如果设为false,将只订阅,不注册。 默认true
2) check 注册中心不存在时,是否报错。
3) subscribe 是否向此注册中心订阅服务,如果设为false,将只注册,不订阅。 默认true
2,dubbo:service 标签的一些属性说明:服务端
register 默认true ,该协议的服务是否注册到注册中心
消费者
<dubbo:application name="dubbo-xmh"/>
<dubbo:registry protocol="zookeeper" address="192.168.1.105:2181" id="xmhDubboProvider" />
<dubbo:reference timeout="8000" id="demoServiceXmh" interface="server.DemoService" registry="xmhDubboProvider" retries="0" check="false"/>
连接数配置:
1,和dubbo其它许多配置类似,接口层面的配置优先级高于全局配置;同样层面的配置消费者端优先于提供者。
2,Dubbo Consumer的初始化连接过程本质就是对配置中的reference引入的服务进行连接建立,按照service+注册中心的维度,与某个注册中心下某个service的所有的provider建立连接的过程。
提供者端:
<!-- global set in provider -->
<dubbo:provider protocol="dubbo" accepts="10" />
or
<!-- global set in provider -->
<dubbo:protocol name="dubbo" accepts="10" />
or
<!-- private set in provider -->
<dubbo:service interface="com.frank.OrderService" connections="10" />
消费者端:
<!-- global set in consumer -->
<dubbo:consumer connections="10" /> dubbo协议长连接不支持此配置 默认缺省值100
or
<!-- private set in consumer -->
<dubbo:reference interface="com.frank.OrderService" connections="10" /> 对每个提供者的最大连接数 dubbo等长连接协表示建立的长连接个数
dubbo
Random LoadBalance 随机,按权重设置随机概率。
RoundRobin LoadBalance 权重轮询调度算法 LeastActive LoadBalance 最少活跃调用数 ConsistentHash LoadBalance 一致性Hash,相同参数的请求总是发到同一提供者
1,新的服务注册到注册中心以后,注册中心会将这些服务通过 @@notify到消费者
2,dubbo服务端和注册中心(zk)存在心跳,由dubbo服务端发起,这是基于zk集群和zk客户端之间的心跳机制。 服务端和zk之间的心跳是zkclient维护的
3,dubbo客户端和dubbo服务端之间存在心跳,由dubbo客户端主动发起
Zookeeper当master挂了,会在30-120s进行leader选举 服务不可用
而 Eureka 不会,即使Eureka有部分挂掉,还有其他节点可以使用的,他们保持平级的关系,只不过信息有可能不一致,这就是AP
service-url.defaultZone: http://eureka1.com:7001/eureka/,http://eureka2.com:7002/eureka/
iBase4J是Java语言的分布式系统架构。使用Spring整合的开源框架。
iBase4J特点:
使用Maven对项目进行模块化管理,提高项目的易开发性、扩展性。
系统包括4个子系统:系统管理Service、系统管理Web、业务Service、业务Web。
系统管理:包括用户管理、权限管理、数据字典、系统参数管理等等。
业务相关:您的业务开发。
可以无限的扩展子系统,子系统之间使用Dubbo或MQ进行通信。
iBase4J主要功能:
1、数据库:Druid数据库连接池,监控数据库访问性能,统计SQL的执行性能。数据库密码加密,加密方式请查看PropertiesUtil,decryptProperties属性配置需要解密的key。
2、持久层:mybatis持久化,使用MyBatis-Plus优化,减少sql开发量;aop切换数据库实现读写分离。Transaction注解事务。
3、MVC:基于spring mvc注解,Rest风格Controller。Exception统一管理。
4、调度:Spring+quartz, 可以查询、修改周期、暂停、删除、新增、立即执行,查询执行记录等。
5、基于session的国际化提示信息,职责链模式的本地语言拦截器,Shiro登录、URL权限管理。会话管理,强制结束会话。
6、缓存和Session:注解redis缓存数据;shiro实现redis分布式session同步,重启服务会话不丢失。
7、多系统交互:Dubbo,ActiveMQ多系统交互,ftp/sftp/fastdafs发送文件到独立服务器,使文件服务分离。
8、前后端分离:没有权限的文件只用nginx代理即可。
9、日志:log4j2打印日志,业务日志和调试日志分开打印。同时基于时间和文件大小分割日志文件。
10、QQ、微信、新浪微博第三方登录。
11、工具类:excel导入导出,汉字转拼音,身份证号码验证,数字转大写人民币,FTP/SFTP/fastDFS上传下载,发送邮件,redis缓存,加密等等。
技术选型:
核心框架:Sring boot + Spring Framework + Dubbo + ibase4j-common
安全框架:Apache Shiro
任务调度:Spring + Quartz
持久层框架:MyBatis + MyBatis-Plus
数据库连接池:Alibaba Druid
缓存框架:Redis
会话管理:Spring-Session
日志管理:SLF4J、Log4j2
前端框架:Angular JS + Bootstrap + Jquery
启动说明:
* 项目依赖activemq、Redis和ZooKeeper服务。
* 使用nginx代理UI:修改配置里的UI目录后重启nginx。
* 启动方法:
SysServiceApplication.java
SysWebApplication.java
* 测试环境打包命令:
clean package -P test
* 生产环境打包命令:
clean package -P product
标签:dubbo,protocol,springboot,提供者,融合,registry,注册,日志 来源: https://www.cnblogs.com/xingminghui111/p/16220566.html