正如上文中的分析,访问注册中心的客户端程序一般会嵌入在服务提供者和服务消费者内部。在服务运行时,服务提供者的注册中心客户端程序会向注册中心注册自身提供的服务,而服务消费者的注册中心客户端程序则从注册中心获取当前订阅的服务信息状态。
同时,为了提高服务路由的效率和容错率,服务消费者可以配备缓存机制以加速服务路由,更重要的是当服务注册中心不可用时,服务消费者可以利用本地缓存路由实现对现有服务的可靠调用。如图 2.5 所示就展示了这一设计思路。
图 2.5
选择工程【cloud_maven】,右击点击“Module”按钮,创建服务提供者模块并命名为【cloud_provider】,如图2.6所示。
图 2.6
配置POM.xml文件坐标信息,代码如下所示。
如上述pom.xml文件中的坐标描述:
●spring-boot-starter-web web组件核心坐标
●spring-boot-starter-actuator监控核心坐标
●lombok自动生成get set 方法坐标
●spring-boot-starter-test springboot测试核心坐标
●junit test测试坐标
配置application.yaml文件:
如上application.yaml文件描述:
●server.port:端口号
●spring.application.name:微服务的名称
编写主启动类:
在包com.cloud.maven中创建一个主启动类,并编写SpringBoot的入口,代码如下所示。
编写控制层逻辑类:
在com.cloud.maven.controller包中创建一个控制请求类,代码如下所示。
如上代码所示,创建了一个请求地址为payment/getPaymentById/{id}的方法,当id为null返回"id不能为空,执行失败",否则返回"执行成功"。
然后再启动主启动类,在浏览器上述地址http://localhost:8001/payment/getPay mentById/31 执行,结果如图 2.7 所示。
图 2.7
服务者注入Eureka:
在服务提供者工程中添加上,Eureka 客户端,坐标如下所示。
然后在application.yaml文件中进行配置上Eureka信息,代码如下所示。
如上配置了服务提供者注入到那个eureka的地址中。
在主启动类上开启Eureka的自动扫描配置,代码如下所示。
注解@EnableEurekaClient,表示开启了自动扫描Eureka。
重启主启动类,并且把Eureka注册中心工程启动,执行http://localhost:7001/地址发现提供者的服务名cloud-payment-service已经注册到Eureka中了,如图2.8 所示。
图 2.8