lagou-cloud-eureka2 的 application.yml:
server:port: 9201spring:application:name: lagou-cloud-eurekaeureka:# Eureka server 本身也是 eureka 的一个客户端,因为在集群下需要与其他 eureka server 进行数据的同步client:# 定义 eureka server url, 如果是集群情况下 defaultZone 设置为集群下的别的 Eureka Server 的地址,多个地址使用逗号隔开service-url:defaultZone: http://LagouCloudEurekaServerA:9200/eureka# 表示是否向 Eureka 中心注册自己的信息,因为自己就是 Eureka Server 所以不进行注册, 默认为 trueregister-with-eureka: true# 是否查询 / 拉取 Eureka Server 服务注册列表,默认为 truefetch-registry: trueinstance:# 使用 ip 注册,否则会使用主机名注册了(此处考虑到对老版本的兼容,新版本经过实验都是 ip)prefer-ip-address: true# 自定义实例显示格式,加上版本号,便于多版本管理,注意是 ip-address,早期版本是 ipAddressinstance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@
商品微服务的 application.xml:
server:# 微服务的集群环境中,通常会为每一个微服务叠加 。port: 9000spring:application:name: lagou-service-productdatasource:driver-class-name: com.MySQL.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/renda01?useUnicode=true&characterEncoding=utf8&serverTimezone=UTCusername: rootpassword: passwordeureka:client:service-url:# 把 eureka 集群中的所有 url 都填写了进来,也可以只写一台,因为各个 eureka server 可以同步注册表defaultZone: http://LagouCloudEurekaServerA:9200/eureka, http://LagouCloudEurekaServerB:9201/eurekainstance:# 使用 ip 注册,否则会使用主机名注册了(此处考虑到对老版本的兼容,新版本经过实验都是 ip)prefer-ip-address: true# 自定义实例显示格式,加上版本号,便于多版本管理,注意是 ip-address,早期版本是 ipAddressinstance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@
页面静态化微服务 application.xml:
server:# 后期该微服务多实例,端口从 9100 递增(10 个以内)port: 9100Spring:application:name: lagou-service-pagedatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/renda01?useUnicode=true&characterEncoding=utf8&serverTimezone=UTCusername: rootpassword: passwordeureka:client:service-url:# 把 eureka 集群中的所有 url 都填写了进来,也可以只写一台,因为各个 eureka server 可以同步注册表defaultZone: http://LagouCloudEurekaServerA:9200/eureka, http://LagouCloudEurekaServerB:9201/eurekainstance:# 使用 ip 注册,否则会使用主机名注册了(此处考虑到对老版本的兼容,新版本经过实验都是 ip)prefer-ip-address: true# 自定义实例显示格式,加上版本号,便于多版本管理,注意是 ip-address,早期版本是 ipAddressinstance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@
服务消费者调用服务提供者
改造页面静态化微服务:之前是直接通过 RestTemplate 写死 URL 进行调用,现在通过 Eureka 方式进行调用 。
@RestController@RequestMapping("/page")public class PageController {@AutowiredRestTemplate restTemplate;@AutowiredDiscoveryClient discoveryClient;@GetMapping("/getProduct/{id}")public Products getProduct(@PathVariable Integer id) {// 1.获得 Eureka 中注册的 lagou-service-product 实例集合List<ServiceInstance> instances = discoveryClient.getInstances("lagou-service-product");// 2.获得实例集合中的第一个ServiceInstance instance = instances.get(0);// 3.根据实例信息拼接 IP 地址String host = instance.getHost();int port = instance.getPort();String url = "http://" + host + ":" + port + "/product/query/" + id;// 调用并返回return restTemplate.getForObject(url, Products.class);}}
启动注册中心集群和微服务并使用 Postman 进行测试:
GET http://localhost:9100/page/getProduct/1
Eureka 细节详解Eureka 元数据详解Eureka 的元数据有两种:标准元数据和自定义元数据 。
标准元数据:主机名、IP 地址、端口号等信息,这些信息都会被发布在服务注册表中,用于服务之间的调用 。
自定义元数据:可以使用 eureka.instance.metadata-map 配置,符合 KEY / VALUE 的存储格式;这些元数据可以在远程客户端中访问 。
eureka:instance:# 使用 ip 注册,否则会使用主机名注册了(此处考虑到对老版本的兼容,新版本经过实验都是 ip)prefer-ip-address: true# 自定义实例显示格式,加上版本号,便于多版本管理,注意是 ip-address,早期版本是 ipAddressinstance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@# 自定义元数据,会和标准元数据一起注册到服务注册中心metadata-map:ip: 192.168.186.128port: 10000user: RendaZhangpwd: 123456
推荐阅读
- 5分钟搭建公网https网页文件服务器,免费权威TLS证书
- 一个比 Nginx 功能更强大的 Web 服务器
- 2021寒假儿童关爱服务四送活动总结?2021寒假儿童关爱服务观后感
- 微型投影仪选购及保养技巧
- 一般公司或者团队是怎么进行代码开发并且部署到服务器上的?
- 微信拉黑后再拉回来对方有提示吗?
- 家用无线路由器DHCP服务器配置方法
- 500行代码,教你用python写个微信飞机大战
- 什么是微内核架构设计?
- 云计算核心技术Docker教程:docker-compose控制服务启动和关闭顺序