Eureka服务注册(已停更)
详情介绍就不多说,网上文档官网文档介绍很清楚,这里直接上代码。
创建maven父工程
1 | xml复制代码<!-- 重点修改打包方式 pom--> |
什么不是服务注册?
- 在父工程中添加两个子工程分别是支付模块cloud-provider-payment8001和客户模块cloud-consumer-order80
- 支付模块配置
1 | xml复制代码<artifactId>cloud-provider-payment8001</artifactId> |
配置yml
1 | yml复制代码server: |
这里新建一个简单数据库就可,一个id,一个name,并配置mapper
1 | java复制代码 @GetMapping("/payment/get/{id}") |
统一结果返回
1 | java复制代码public class Result<T> { |
- 客户模块配置
1 | xml复制代码artifactId>cloud-consumer-order80</artifactId> |
1 | yml复制代码server: |
配置RestTemplate,后面会详细解释
1 | java复制代码@Configuration |
Controller,获得支付模块接口并调用
1 | java复制代码 private static final String PAYMENT_URL = "http://localhost:8001"; |
- 测试
开启服务测试
成功调用
Eureka服务注册
- 新建服务注册中心模块cloud-eureka-server7001
1 | xml复制代码 <artifactId>cloud-eureka-server7001</artifactId> |
yml配置
1 | yml复制代码server: |
启动类
1 | java复制代码@SpringBootApplication |
- 配置服务端与客服端
pom都新增
1 | xml复制代码 <!-- 这里是 client --> |
order80配置yml
1 | yml复制代码spring: |
启动类
1 | java复制代码@SpringBootApplication |
payment8001配置是一样的只需要改一下名字
- 测试
启动7001-》8001-》80
浏览器输入注册中心地址http://localhost:7001/
查看结果看到相应配置以及被注册进来的消费者生产者
这时候测试80端口接口还是行得通的。
- 集群
集群多个注册中心和多个服务业务,那么久多写出一个eureka7002当做集群控制中心,这里如果是在本地电脑操作,就要修改C:\Windows\System32\drivers\etc中hosts文件添加
1 | txt复制代码127.0.0.1 eureka7002.com |
eureka7002配置和eureka7001差不多也可以直接复制修改名字,重点在于这两个注册中心也要互相注册,将指向本身的url指向要集群的url即可。
1 | yml复制代码 service-url: |
多个支付模块集群配置几乎和payment8001几乎一样,注意点是application-name
cloud-payment-service ,还有一点就是现在有两个注册中心,需要同时注册进入两个注册中心用逗号隔开就好
1 | yml复制代码 service-url: |
- 测试
这时调用80端口查询接口就有不同的效果。更改一下8001,8002Controller代码
1 | java复制代码 @Value("${server.port}") |
更改80端口代码,本来80接口是写死查询8001。我们这里要改为注册中心暴露的端口CLOUD-PAYMENT-SERVICE也就是application-name。
1 | java复制代码// private static final String PAYMENT_URL = "http://localhost:8001"; |
修改配置类加入@LoadBalanced 赋予RestTemplate负载均衡的能力
1 | java复制代码@Configuration |
测试结果,看到结果我们会发现多发送请求就会访问不同的端口。说明我们已经成功了。
总结
- 这点对点的遍历中理解很简单,就模块之间的方法调用。但是如果服务很多用户量急剧增加,量变引起质变,怎么去判断有多少提供的服务,有多少客户?
- 那就用到eureka服务注册,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。 哪还有一个问题就是注册中心程序崩了怎么办或者服务提供程序崩了怎么办?
- 这时就引出的集群概念,试想你的注册中心只有一个only one, 它出故障了那就完犊子谁也不认识谁老死不相往来,会导致整个为服务环境不可用,所以搭建Eureka注册中心集群 ,实现负载均衡+故障容错,而服务提供接口也是这个道理。
- 小知识点
- Eureka自我保护功能eureka.server.enable-self-preservation=true默认开启。
这个功能就是在服务可能停止运行之后不会直接将服务删除,而是默认应该是90秒删除,排除假死的可能。这种情况就相当于人停止心跳大脑不会直接死亡还有抢救的机会,假死现象不能放弃每一个病人。
1 | yml复制代码eviction-interval-timer-in-ms: 2000 //设置假死时间 |
- 发现payment8001、8002中有相同的实体类entities,所以我们将这个相同的实体类拿出来放入一个新模块cloud-api-commons中。
配置pom加入需要的
1 | xml复制代码<dependencies> |
包结构最好和8001、8002一样。将cloud-api-commons通过maven打包。最好是先clean然后install
删除8001/8002中实体类包然后通过maven导入上面打好的包
1 | java复制代码 <dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity --> |
多多指教,QQ1819220754可以交流学习经验
更新
zookeeper
Ribbon
OpenFeign
本文转载自: 掘金