- 服务治理框架
- 服务的监控
- 服务的注册发现
- 服务的通信
- 服务的容错
- 服务的负载均衡
SpringCloud Alibaba :
- Dubbo
- seata
- rocketMQ
- Nacos
- Sentinel
- 创建一个spring-cloud-dubbo-example的maven工程
分别添加三个模块:
- spring-cloud-dubbo-sample-api
- spring-cloud-dubbo-sample-provider
- spring-cloud-dubbo-sample-consumer
其中后面两个模块都是spring boot的应用。
修改 spring-cloud-dubbo-sample-provider 这个模块中:
- 将dependencyManagement部分的依赖移动到parent pom.xml
- 修改spring-cloud-dubbo-sample-provider中的pom.xml,增加parent模块的依赖
com.gupaoedu.dubbo spring-cloud-dubbo-example1.0-SNAPSHOT
- 添加maven依赖
2.2 定义服务接口com.alibaba.cloud spring-cloud-starter-dubbocom.gupaoedu.dubbo 1.0-SNAPSHOT spring-cloud-dubbo-sample-apicom.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
在spring-boot-dubbo-sample-api模块中,定义接口:
public interface IHelloService { String sayHello(); }2.3 实现服务
在spring-boot-dubbo-sample-provider中,实现IHelloService接口:
public class HelloServiceImpl implements IHelloService{ @Override public String sayHello() { return "Hello GuPao"; } }
添加 @EnableDiscoveryClient 注解:
@EnableDiscoveryClient @SpringBootApplication public class SpringCloudDubboSampleProviderApplication { public static void main(String[] args) { SpringApplication.run(SpringCloudDubboSampleProviderApplication.class, args); } }2.4 配置dubbo服务发布
- 在服务实现类中添加 @Service 注解:
@Service public class SayHelloServiceImpl implements ISayHelloService{ @Override public String sayHello(String msg) { return "Hello, GuPaoEdu.cn"; } }
注意:@Service注解是这个下面的:org.apache.dubbo.config.annotation.Service
- 配置dubbo提供方信息
#dubbo 服务扫描基础包路径 dubbo.scan.base-packages=com.gupaoedu.dubbo.springclouddubbosampleprovider dubbo.protocol.id=dubbo # Dubbo 服务暴露的协议配置,其中子属性 name 为协议名称,port 为协议端口( -1 表示自增端口,从 20880 开始) dubbo.protocol.name=dubbo #表示从20880自增 dubbo.protocol.port=-1 spring.cloud.nacos.discovery.server-addr=192.168.216.128:8848
- dubbo.scan.base-packages : 指定 Dubbo 服务实现类的扫描基准包
- dubbo.protocol : Dubbo 服务暴露的协议配置,其中子属性 name 为协议名称, port 为协议端口( -1 表示自增端口,从 20880 开始)
- dubbo.registry : Dubbo 服务注册中心配置,其中子属性 address 的值 "springcloud://localhost",说明挂载到 Spring Cloud 注册中心
- spring.cloud.nacos.discovery : Nacos 服务发现与注册配置,其中子属性 server-addr指定 Nacos 服务器主机和端口
项目的版本号格式为 x.x.x 的形式,其中 x 的数值类型为数字,从 0 开始取值,且不限于 0~9 这个范围。项目处于孵化器阶段时,第一位版本号固定使用 0,即版本号为 0.x.x 的格式。
由于 Spring Boot 1 和 Spring Boot 2 在 Actuator 模块的接口和注解有很大的变更,且 spring-cloudcommons 从 1.x.x 版本升级到 2.0.0 版本也有较大的变更,因此我们采取跟 SpringBoot 版本号一致的版本:
- 1.5.x 版本适用于 Spring Boot 1.5.x
- 2.0.x 版本适用于 Spring Boot 2.0.x
- 2.1.x 版本适用于 Spring Boot 2.1.x
- 2.2.x 版本适用于 Spring Boot 2.2.x
2.6.2 添加配置文件com.alibaba.cloud spring-cloud-starter-dubboorg.springframework.boot spring-boot-actuatorcom.gupaoedu.dubbo 1.0-SNAPSHOT spring-cloud-dubbo-sample-apicom.alibaba.cloud spring-cloud-starter-alibaba-nacos-discoveryorg.springframework.boot spring-boot-starter-web
spring.application.name=spring-cloud-dubbo-sample-consumer dubbo.application.name=spring-cloud-dubbo-sample-consumer dubbo.cloud.subscribed-services=spring-cloud-dubbo-sample-provider spring.cloud.nacos.discovery.server-addr=192.168.216.128:8848
除应用名称 spring.application.name 存在差异外, spring-cloud-dubbo-client-sample 新增了属性 dubbo.cloud.subscribed-services 的设置。并且该值为服务提供方应用 "springcloud-dubbo-sample-provider"。
它的主要作用是服务消费方订阅服务提供方的应用名称的列表,若需订阅多应用,使用 "," 分割。不推荐使用默认值为 "*",它将订阅所有应用。
@RestController @SpringBootApplication public class SpringCloudDubboSampleConsumerApplication { public static void main(String[] args) { SpringApplication.run(SpringCloudDubboSampleConsumerApplication.class, args); } @Reference ISayHelloService sayHelloService; @GetMapping("/say") public String say(){ return sayHelloService.sayHello("Mic"); } }2.5.4 测试
访问:http://localhost:8080/say
三、Dubbo Spring Boot 3.1基于spring boot集成Dubbo方式dubbo集成到spring boot中有一个好处,就是它可以继承spring boot本身的特性
- 自动装配(注解驱动、自动装配)
- production-ready(安全机制、健康检测、外部化配置)
创建基础的项目结构:
spring-boot-dubbo-example [maven]
- spring-boot-dubbo-sample-api [maven]
- spring-boot-dubbo-sample-provider [spring boot]
- spring-boot-dubbo-sample-consumerp [spring-boot]
从2.7开始,dubbo的版本和dubbo-spring-boot的版本是保持一致的,所以大家不用再去担心版本的问题。
3.4 添加服务以及发布org.apache.dubbo dubbo-spring-boot-starter2.7.7 com.alibaba.nacos nacos-client1.2.1
@DubboService(registry = {"shanghai","hunan"},version = "2.0") public class SayHelloServiceImpl2 implements ISayHelloService { @Override public String sayHello(String msg) { return "[Version2.0]Hello,"+msg+" GuPaoEdu.cn"; } }
registry = {"shanghai","hunan"},version = "2.0" 这一块是设置注册中心,可选参数
spring.application.name=spring-boot-dubbo-sample-provider dubbo.registry.address=nacos://192.168.216.128:8848 dubbo.scan.basepackages=com.gupaoedu.springboot.dubbo.springbootdubbosampleprovider.service dubbo.protocol.name=dubbo dubbo.protocol.port=-13.5 客户端编写服务引用代码 3.5.1 添加jar包依赖
3.5.2 添加web测试类org.springframework.boot spring-boot-starter-webcom.gupaoedu.com 1.0-SNAPSHOT spring-boot-dubbo-sample-apiorg.apache.dubbo dubbo-spring-boot-starter2.7.7 com.alibaba.nacos nacos-client1.2.1
@RestController @SpringBootApplication public class SpringBootDubboSampleConsumerApplication { public static void main(String[] args) { SpringApplication.run(SpringBootDubboSampleConsumerApplication.class, args); } @DubboReference(registry = {"shanghai","hunan"},version = "2.0") ISayHelloService sayHelloService; @GetMapping("/say") public String say(){ return sayHelloService.sayHello("Mic"); } }3.5.3 配置
dubbo.registry.address=nacos://192.168.216.128:88483.5.4 测试
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)