- 架构的区别
- soa架构:把一个项目分成多个模块,然后模块间进行调用
- 微服务:把项目分成多个小项目,每个小项目都是完整的项目,然后进行调用接口实现
- 分布式
- 我们可以把一个项目部署在多个服务器上,组成一个整体的项目,soa和微服务都是分布式系统
- rpc框架
- dubbo服务流程
- 服务方配置
- 接口必须使用dubbo提供的@Service进行
- 配置
<!-- 指定应用名称 -->
<dubbo:application name="health_service_provider"/>
<!--指定服务注册中心地址-->
<dubbo:registry address="zookeeper://192.168.98.128:2181"/>
<!--指定暴露服务的端口,如果不指定默认为20880-->
<dubbo:protocol name="dubbo" port="20887"/>
<!--批量扫描,发布服务-->
<dubbo:annotation package="com.ssw.service"/>
消费方的配置- @Reference进行从本地查找服务,因为已经从zookeeper上订阅了所有的服务,所以zookeeper停了,也能使用服务,因为第一次已经订阅在本地缓存中了
- 配置
<!-- 指定应用名称 -->
<dubbo:application name="health_backend" />
<!--指定服务注册中心地址-->
<dubbo:registry address="zookeeper://192.168.98.128:2181"/>
<!--批量扫描-->
<dubbo:annotation package="com.ssw"/>
<!--超时全局设置 10分钟 check=false 不检查服务提供方,开发阶段建议设置为false check=true 启动时检查服务提供方,如果服务提供方没有启动则报错 -->
<dubbo:consumer timeout="600000" check="false"/>
dubbo影响通信的两个点dubbo直连- 也就是不用走zookeeper就能连上例如@Reference(url=”localhost:20880”)
dubbo监控中心安装:详情请见dubbo监控中心安装博客dubbo也可以用xml配置进行 例如- <bean id=”hellowser” class=”com.ssw.service.imp.hellImpl”/>
- <dubbo:service interface=”com.ssw.service.hell” ref=”helloser”/>
dubbo中如果有事务,则需要使用@Service(interfaceClass = CheckGroupService.class)
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
如果service用xml配置则不需要以上的配置