要做的事情是建两个服务,一个支付中心作为服务的提供者,一个订单中心作为服务的消费者,两个服务都注册到zookeeper中,订单中心可以从注册中心获取到支付服务调用支付功能。

达到的效果是,通过请求订单服务,订单服务调用支付服务完成支付

[zk: localhost:2181(CONNECTED) 6] get /services/cloud-provider-payment/10bf1529-7c41-4e28-a39c-31ab201cc3c2
{"name":"cloud-provider-payment","id":"10bf1529-7c41-4e28-a39c-31ab201cc3c2","address":"192.168.1.5","port":8004,"sslPort":null,"payload":{"@class":"org.springframework.cloud.zookeeper.discovery.ZookeeperInstance","id":"application-1","name":"cloud-provider-payment","metadata":{}},"registrationTimeUTC":1611716489710,"serviceType":"DYNAMIC","uriSpec":{"parts":[{"value":"scheme","variable":true},{"value":"://","variable":false},{"value":"address","variable":true},{"value":":","variable":false},{"value":"port","variable":true}]}}
cZxid = 0x4b0
ctime = Tue Jan 26 22:01:32 EST 2021
mZxid = 0x4b0
mtime = Tue Jan 26 22:01:32 EST 2021
pZxid = 0x4b0
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x17741c1e9690001
dataLength = 532
numChildren = 0
[zk: localhost:2181(CONNECTED) 7]

这是cloud-provider-payment在zookeeper的注册信息

{"name": "cloud-provider-payment","id": "10bf1529-7c41-4e28-a39c-31ab201cc3c2","address": "192.168.1.5","port": 8004,"sslPort": null,"payload": {"@class": "org.springframework.cloud.zookeeper.discovery.ZookeeperInstance","id": "application-1","name": "cloud-provider-payment","metadata": {}},"registrationTimeUTC": 1611716489710,"serviceType": "DYNAMIC","uriSpec": {"parts": [{"value": "scheme","variable": true},{"value": "://","variable": false},{"value": "address","variable": true},{"value": ":","variable": false},{"value": "port","variable": true}]}
}

重点看配置文件

一、在服务器启动zookeeper

zookeeper的安装和配置…

二、建一个支付服务工程,作为服务的提供者

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://maven.apache.org/POM/4.0.0"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springCloud</artifactId><groupId>com.george.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud-provider-payment8004</artifactId><dependencies><!--    引入自定义的api通用包,可以使用Payment支付Entity    --><dependency><groupId>com.george.springcloud</groupId><artifactId>cloud-api-commons</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--   引入zookeeper客户端     --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zookeeper-discovery</artifactId><!--排除自带的zookeeper 3.5.3--><exclusions><exclusion><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId></exclusion></exclusions></dependency><!--添加zookeeper 3.4.14版本,和zookeeper服务器版本一致--><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.14</version></dependency></dependencies></project>
# 8004表述注册到zookeeper府二区的支付服务提供者端口号
server:port: 8004# 服务别名---zookeeper注册中心名称
spring:application:name: cloud-provider-paymentcloud:zookeeper:connect-string: master:2181
package com.george.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;/*** @author Yang Hao* @description* @date 2020-09-15 17:29*/
@SpringBootApplication
@EnableDiscoveryClient //该注解用于向使用consul或者zookeeper作为注册中心时注册服务
public class PaymentZKMain8004 {public static void main(String[] args) {SpringApplication.run(PaymentZKMain8004.class, args);}}
package com.george.springcloud.controller;import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.UUID;/*** @author Yang Hao* @description* @date 2020-09-15 17:32*/
@RestController
@Slf4j
public class PaymentController {@Value("${server.port}")private String serverPort;@RequestMapping(value = "/payment/zk")public String paymentzk() {return "springcloud with zookeeper: " + serverPort + "\t" + UUID.randomUUID().toString();}
}

三、建一个订单中心工程,作为服务的消费者

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://maven.apache.org/POM/4.0.0"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springCloud</artifactId><groupId>com.george.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud-consumerzk-order80</artifactId><dependencies><!--    引入自定义的api通用包,可以使用Payment支付Entity    --><dependency><groupId>com.george.springcloud</groupId><artifactId>cloud-api-commons</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--   引入zookeeper客户端     --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zookeeper-discovery</artifactId><!--排除自带的zookeeper 3.5.3--><exclusions><exclusion><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId></exclusion></exclusions></dependency><!--添加zookeeper 3.4.14版本,和zookeeper服务器版本一致--><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.14</version></dependency></dependencies>
</project>
server:port: 80# 服务别名---zookeeper注册中心名称
spring:application:name: cloud-consumer-ordercloud:zookeeper:connect-string: master:2181
package com.george.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;/*** @author Yang Hao* @description* @date 2020-09-15 17:29*/
@SpringBootApplication
@EnableDiscoveryClient //该注解用于向使用consul或者zookeeper作为注册中心时注册服务
public class OrderZKMain80 {public static void main(String[] args) {SpringApplication.run(OrderZKMain80.class, args);}}
package com.george.springcloud.controller;import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;import javax.annotation.Resource;/*** @author Yang Hao* @description* @date 2020-09-14 16:51*/
@RestController
@Slf4j
public class OrderZKController {public static final String INVOKE_URL = "http://cloud-provider-payment";@Resourceprivate RestTemplate restTemplate;@GetMapping(value = "/consumer/payment/zk")public String paymentInfo() {return restTemplate.getForObject(INVOKE_URL + "/payment/zk", String.class);}}
package com.george.springcloud.config;import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;/*** @author Yang Hao* @description* @date 2020-09-14 16:54*/
@Configuration
public class ApplicationContextConfig {@Bean@LoadBalanced//使用@LoadBalanced注解赋予RestTemplate负载均衡的能力public RestTemplate restTemplate() {return new RestTemplate();}
}

白话使用zookeeper作为注册中心搭建微服务相关推荐

  1. 微服务 注册中心_4.微服务架构的第二个组件:注册中心

    在微服务架构下,主要有三种角色: 服务提供者(RPC Server) 服务消费者(RPC Client) 服务注册中心(Registry) RPC Server:服务提供者,启动时根据服务发布文件se ...

  2. 基于Eureka服务治理的高可用性注册中心搭建

    高可用注册中心 在微服务这样的分布式环境中,我们需要充分考虑故障发生的情况,所以在生产环境中必须对各个组件进行高可用部署,对于微服务如此,对于微服务注册中心也是一样.上一篇文章我们搭建了单节点的服务治 ...

  3. 初次搭建微服务报错java.Net.UnknownHostException

    按照教程一步一步往下走,感觉走的挺顺利的: (1)先搭建好集群版的两台服务中心:首先引入Eureka-server的相关的依赖,其次yml文件中添加以下配置: 注册中心1: server: port: ...

  4. 使用Nacos搭建微服务注册中心和配置中心(二)

    接着上篇Nacos注册中心搭建之后,开始Nacos配置中心使用. 1.在微服务中pom.xml文件中添加nacos-config引用 <dependency>     <groupI ...

  5. springboot2 springcloud Greenwich.SR3 构建微服务--1.eureka注册中心搭建

    本一系列springcloud的文章主主要讲应用, 也会涉及到一些原理的讲解. 写了几句自己这段时间看书,总结的微服务的东西送给你们 : 道为源,源分多支为术,如龙生九子,九子各不同,然皆为龙也. 凡 ...

  6. spring cloud+dotnet core搭建微服务架构:配置中心续(五)

    前言 上一章最后讲了,更新配置以后需要重启客户端才能生效,这在实际的场景中是不可取的.由于目前Steeltoe配置的重载只能由客户端发起,没有实现处理程序侦听服务器更改事件,所以还没办法实现彻底实现这 ...

  7. spring cloud+dotnet core搭建微服务架构:配置中心(四)

    前言 我们项目中有很多需要配置的地方,最常见的就是各种服务URL地址,这些地址针对不同的运行环境还不一样,不管和打包还是部署都麻烦,需要非常的小心.一般配置都是存储到配置文件里面,不管多小的配置变动, ...

  8. springboot整合dubbo\zookeeper做注册中心

    springboot整合dubbo发布服务,zookeeper做注册中心.前期的安装zookeeper以及启动zookeeper集群就不说了. dubbo-admin-2.5.4.war:dubbo服 ...

  9. Linux-Nacos-服务注册中心搭建

    Linux-Nacos-服务注册中心搭建 由于springcloud 注册中心 Eureka 早已停止维护所以我们使用Nacos 官方: https://nacos.io/zh-cn/docs/wha ...

  10. eruke注册中心搭建

    2019独角兽企业重金招聘Python工程师标准>>> eruke注册中心搭建 配置pom.xml <dependencyManagement> <dependen ...

最新文章

  1. KubeSphere安装Mysql5.7
  2. SAP HUM 将HU与交货单解绑
  3. 字符串中连续出现最多的子串 amp; 字符串中最长反复子串
  4. 0.为什么要学习Vue?
  5. Linux——Centos7网络配置1ens33文件
  6. 『收藏向 期末SSM课设救急』 教你从搭建到测试运行手撸一个SSM项目实战,附带源码,前端页面、解析和一般遇到的问题(排雷)
  7. 二维数组鞍点问题(C++)
  8. Codeforces 964B(贪心)
  9. javascript的constructor属性介绍
  10. PYTHON莫名其妙的崩溃
  11. 算法: 1和0子集合的个数 474. Ones and Zeroes
  12. 百度在线笔试计算机视觉,[转载]2014 百度 计算机视觉笔试
  13. 海洋经济发展具体内容
  14. 管理系统菜单父子结构,有parentId,快速获取结构树代码
  15. upvar, pass by name
  16. 财务共享服务中心如何实现效率翻番?
  17. 自定义交叉熵损失函数的几个问题
  18. No enclosing instance of type X is accessible. Must qualify the allocation with an enclosing instanc
  19. ccie 与 java,Java和ccie的区别
  20. iOS开发最新参考书籍 iOS7

热门文章

  1. SoftGrid教程——排序服务器
  2. pytorch梯度的自动求取
  3. 数据--第27课 - 初始斗转
  4. 凸优化第二章凸集 2.5 分离与支撑超平面
  5. XDebug On Ubuntu
  6. MySql 优化----- 慢查询
  7. mysql大数据高并发处理
  8. RichContentLabel使用注意
  9. C++输出九九乘法表
  10. 《Linux性能及调优指南》 Linux进程管理