Eureka 集群搭建
2020-04-22 16:02:16来源:博客园 阅读 ()
Eureka 集群搭建
为什么要搭建注册中心集群 以防出现单点故障 也就是唯一那个注册中心出现故障 导致整个架构故障
互相注册 相互守望
先要修改本机的hosts文件的主机映射 增加映射 C:\Windows\System32\drivers\etc\hosts
1.修改之前7001配置文件
server:
port: 7001
eureka:
instance:
hostname: localhost #服务端的实例名称
client:
#false表示不向服务器注册自己
register-with-eureka: false
#false表示自己就是注册中心 去维护服务实例 不需要去检索服务
fetch-register: false
#设置与Enreka server交互的地址查询服务和注册服务都需要这个地址
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
2.修改之后 需要修改hostname 这个就是刚刚修改的本机的hosts主机映射 还需要修改服务地址
server:
port: 7001
eureka:
instance:
hostname: eureka7001.com #服务端的实例名称 主机别名 修改
client:
#false表示不向服务器注册自己
register-with-eureka: false
#false表示自己就是注册中心 去维护服务实例 不需要去检索服务
fetch-register: false
#设置与Enreka server交互的地址 查询服务和注册服务都需要这个地址 修改
service-url:
defaultZone: http://eureka7002.com:7002/eureka/
3.创建另一个注册中心7002 导入依赖不赘述了 7002的application.yml配置
server:
port: 7002
eureka:
instance:
hostname: eureka7002.com #服务端的实例名称 主机别名
client:
#false表示不向服务器注册自己
register-with-eureka: false
#false表示自己就是注册中心 去维护服务实例 不需要去检索服务
fetch-register: false
#设置与Enreka server交互的地址查询服务和注册服务都需要这个地址
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
4.启动7001 7002 配置成功
5.修改微服务提供者的配置client 其实只是增加了一个服务请求地址 defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka 集群版
8888消费者模块
server:
port: 8888
spring:
application:
name: cloud-order-service
eureka:
client:
register-with-eureka: true #自己注册到eureka 默认true
#是否从eureka抓取已有的注册信息 默认为true 单节点无所谓 集群必须为true 才能配合ribbon使用负载均衡
fetch-registry: true
service-url:
#defaultZone: http://localhost:7001/eureka #注册中心地址
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版
支付模块8001
server:
port: 8001
spring:
application:
name: cloud-payment-service
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/db2019?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
username: root
password: 1234
mybatis:
mapper-locations: classpath:mapper/*.xml #配置文件
type-aliases-package: com.lyx.cloud.entities #所有entity别名所在包
eureka:
client:
register-with-eureka: true #自己注册到eureka 默认true
#是否从eureka抓取已有的注册信息 默认为true 单节点无所谓 集群必须为true 才能配合ribbon使用负载均衡
fetch-registry: true
service-url:
# defaultZone: http://localhost:7001/eureka #注册中心地址 单机版
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版
5.启动8888-消费者模块 8001-支付模块服务提供 成功注册
6.微服务提供者 集群搭建 再创建一个支付模块8002
server:
port: 8002
spring:
application:
name: cloud-payment-service
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/db2019?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
username: root
password: 1234
mybatis:
mapper-locations: classpath:mapper/*.xml #配置文件
type-aliases-package: com.lyx.cloud.entities #所有entity别名所在包
eureka:
client:
register-with-eureka: true #自己注册到eureka 默认true
#是否从eureka抓取已有的注册信息 默认为true 单节点无所谓 集群必须为true 才能配合ribbon使用负载均衡
fetch-registry: true
service-url:
# defaultZone: http://localhost:7001/eureka #注册中心地址 单机版
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版
7.运行所有模块 注册成功
8.修改单机版的8888消费者的controller 让它不指定从服务端口
controller
@RestController
@Slf4j
public class OrderController {
@Autowired
private RestTemplate restTemplate;
//private static final String BASE_URL="http://localhost:8001"; 修改前的端口
private static final String BASE_URL="http://CLOUD-PAYMENT-SERVICE"; 修改后 变成在eureka注册的服务实例名称
@PostMapping("/comsumer/payment/create")
public CommonResult<PayMent> create(@RequestBody PayMent payMent){
return restTemplate.postForObject(BASE_URL+"/payment/create",payMent,CommonResult.class);
}
@GetMapping("/comsumer/payment/get/{id}")
public CommonResult<PayMent> getPaymentByid(@PathVariable("id") Long id){
return restTemplate.getForObject(BASE_URL+"/payment/get/"+id,CommonResult.class);
}
}
9.修改RestTemplate 配置 需要给它添加一个注解@LoadBalanced 赋予RestTemplate负载均衡能力 默认是轮询
是因为注册中心暴露了多个支付模块的服务名称CLOUD-PAYMENT-SERVICE 但是消费者模块不知道选哪个
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
10.测试 所以消费者模块只关注微服务名称
原文链接:https://www.cnblogs.com/lyx666/p/12749077.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- java学习之第一天 2020-06-11
- 数据源管理 | Kafka集群环境搭建,消息存储机制详解 2020-06-11
- Dubbo+Zookeeper集群案例 2020-06-09
- 【从单体架构到分布式架构】(二)请求增多,单点变集群(1) 2020-06-07
- Spring Cloud微服务(一):公共模块的搭建 2020-06-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash