zookeeper作为服务注册中心

zk

    • 客户端消费者
      • pom, 排除依赖
      • yaml 入驻zk
      • 主启动
      • 配置restTemplate + ribbon负载均衡调用服务提供者
      • 调用实现
    • 服务提供者
      • pom
      • yaml
      • mainboot
      • 提供被调用的服务
    • linux命令查看zk的服务,结点信息

客户端消费者

pom, 排除依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>cloud2020</artifactId><groupId>top.bitqian</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud-consumerzk-order80</artifactId><dependencies><dependency><groupId>top.bitqian</groupId><artifactId>cloud-api-commons</artifactId><version>${project.version}</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><!-- 服务发现 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zookeeper-discovery</artifactId><!--排除zk3.5.3--><exclusions><exclusion><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId></exclusion></exclusions></dependency><!--添加zk 3.4,9版本--><!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper --><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.9</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency></dependencies></project>

yaml 入驻zk

server:port: 80# 服务名
spring:application:name: cloud-consumer-order# zk 地址cloud:zookeeper:connect-string: 127.0.0.1:2181

主启动

package top.bitqian.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;/*** @author echo lovely* @date 2020/12/6 10:17*/// 开启服务发现
@EnableDiscoveryClient
@SpringBootApplication
public class OrderZKMain80 {public static void main(String[] args) {SpringApplication.run(OrderZKMain80.class, args);}}

配置restTemplate + ribbon负载均衡调用服务提供者

package top.bitqian.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 echo lovely* @date 2020/12/6 10:18*/@Configuration
public class ApplicationContextConfig {// loadBalanced 赋予restTemplate负载均衡的能力@LoadBalanced@Beanpublic RestTemplate getRestTemplate() {// 用于远程调用另一个微服务return new RestTemplate();}}

调用实现

package top.bitqian.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;/*** 通过zk远程调用8004* @author echo lovely* @date 2020/12/6 10:18*/@RestController
@Slf4j
public class PaymentController {@Resourceprivate RestTemplate restTemplate;private static final String INVOKE_URL = "http://cloud-provider-payment";@GetMapping("/consumer/payment/zk")public String payment() {// 调用cloud-provider-payment服务的controller 地址String result = restTemplate.getForObject(INVOKE_URL + "/payment/zk", String.class);log.info("res---------->" + result);return result;}}

服务提供者

pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>cloud2020</artifactId><groupId>top.bitqian</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><!-- zookeeper client~ --><artifactId>cloud-provider-payment8004</artifactId><dependencies><dependency><groupId>top.bitqian</groupId><artifactId>cloud-api-commons</artifactId><version>1.0-SNAPSHOT</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- 新增zookeeper服务注册中心 --><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-zookeeper-discovery --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zookeeper-discovery</artifactId><!--排除zk3.5.3--><exclusions><exclusion><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId></exclusion></exclusions></dependency><!--添加zk 3.4,9版本--><!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper --><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.9</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies></project>

yaml

# zookeeper client 8004~
server:port: 8004spring:application:name: cloud-provider-payment # 服务别名,注册zookeeper到服务注册中心cloud:zookeeper:connect-string: 47.99.161.195:2181

mainboot

package top.bitqian.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;/*** @author echo lovely* @date 2020/12/3 21:43*/// 表示 用于向使用consul或者zookeeper作为注册中心时注册服务~
@EnableDiscoveryClient
@SpringBootApplication
public class PaymentMain8004 {// 测试,断掉客户端时, zookeeper不会立即干掉服务。会等客户端连接上, 过一会连接不上 会干掉服务。// 是临时结点。public static void main(String[] args) {SpringApplication.run(PaymentMain8004.class, args);}}

提供被调用的服务

package top.bitqian.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 echo lovely* @date 2020/12/3 21:48*/@RestController
@Slf4j
public class PaymentController {@Value("${server.port}")private String port;@RequestMapping("/payment/zk")public String getPaymentZooKeeper(){log.info("get server info ~");return "client port--> " + port + " \t" + UUID.randomUUID();}}

linux命令查看zk的服务,结点信息

    zookeeper启动1. ./zkServer.sh start2. ./zkCli.sh   # 连接服务~ls / # 查看结点get /zookeeperls /zookeeper # 查看当前服务的结点ls /services # 查看服务ls /services/cloud-provider-payment # 查看当前服务的流水号~get /services/cloud-provider-payment/fiururr-jgtr009-jngg9 # 查看具体某个服务的服务信息{"name": "cloud-provider-payment","id": "0301d874-94d8-4115-b04d-b3e107cad26a","address": "192.168.0.167","port": 8004,"sslPort": null,"payload": {"@class": "org.springframework.cloud.zookeeper.discovery.ZookeeperInstance","id": "application-1","name": "cloud-provider-payment","metadata": {}},"registrationTimeUTC": 1607004949029,"serviceType": "DYNAMIC","uriSpec": {"parts": [{"value": "scheme","variable": true},{"value": "://","variable": false},{"value": "address","variable": true},{"value": ":","variable": false},{"value": "port","variable": true}]}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420456.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

写一个简单控制台启动的mcv服务

1.在项目工程里添加wcf服务&#xff0c;工程中会出现两个文件IService.cs和Service.cs. IService.cs中定义服务中的接口&#xff0c;接口必须加特性[OperationContract]才能在客户端添加服务后&#xff0c;实例化对象中发现该函数。 namespace ConsoleApplication1 { [ServiceC…

consul作为服务注册中心

consulconsul下载地址providerorderconsul 由go语言编写的一款优秀的服务注册中心应用。 https://www.consul.io/intro/index.html 中文文档 功能&#xff1a; 1. 服务发现 提供HTTP和DNS两种发现方式 2. 健康监测 支持多种协议&#xff0c;HTTP、TCP、Docker、Shell脚本定制…

ribbon, restTemplate 负载均衡服务调用

ribbonribbon conceptribbon核心组件IRule模仿源码重写轮询ribbon concept spring cloud ribbon 是基于Netflix ribbon实现的一套客户端负载均衡的工具。 简单的说&#xff0c; Ribbon是Netflix发布的开源项目&#xff0c; 主要功能是提供客户端的软件负载均衡算法和服务 完善的…

网页排版出现空白

网页顶部多了一个空白行&#xff0c;甚至引起了式样的错乱&#xff0c;样式都设置好了&#xff0c;可还是有空白行。很是奇怪&#xff0c;后来搜索了一下&#xff0c;找到原因了。就是因为页面编码时加了BOM&#xff0c;才导致的空白行&#xff0c;怎么也去不掉。 分析原因&…

openfeign 负载均衡调用服务

https://github.com/spring-cloud/spring-cloud-openfeign openFeign, fegin &#x1f446;open feginopenFegin使用日志打印配置类open fegin Feign是一个声明式的web服务客户端&#xff0c;让编写web服务客户端变得非常容易&#xff0c;只需创建一个接口并在接口上添加注解即…

MVC中使用ajax传递json数组

解决方法 去www.json.org下载JSON2.js再调用JSON.stringify(JSONData)将JSON对象转化为JSON串。var people [{ "UserName": "t1", "PassWord": "111111", "Sex": "男" }, { "UserName": "t2"…

hystrix断路器引发的相关概念

1 分布式系统面临的问题 服务雪崩 多个微服务之间调用的时候&#xff0c;假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的"扇出”&#xff0c;如果扇出的链路上某个微服务的调用响应时间过长或者不可用&#xff0c;对微服务A的调用就会…

ABAP 弹出框自建内容POPUP

可以自己设计内容&#xff0c;仅供参考。转载于:https://www.cnblogs.com/matinal/p/4135269.html

前端学习(1287):node.js的组成

var first hello nodejs; console.log(first);function fn() {console.log("fn函数被调用了"); }fn();for (var i 0; i < 5; i) {console.log(i); }if (true) {console.log(123); } 运行结果

gateway路由网关,zuul的替代品

zuul1 low, zuul2 还没长大呢&#xff0c;不敢用。 gateway 基于netty, spring flux, reactor 异步非阻塞, 快呀。 与spring良好整合, spring社区的呢。官方推荐。https://spring.io/projects/spring-cloud-gateway https://cloud.spring.io/spring-cloud-static/spring-cloud-…

ASP.NET MVC 5 入门教程 (3) 路由route

文章来源&#xff1a; Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-route.html 上一节&#xff1a;ASP.NET MVC 5 入门教程 (2) 控制器Controller 下一节&#xff1a;ASP.NET MVC 5 入门教程 (4) View和ViewBag 源码下载&#xff1a;点我下载 上一节我…

spring cloud config 配置中心

/(ㄒoㄒ)/~~ 还有好多要学鴨 cloud config分布式面临的系统配置问题&#xff0c;如何解决分为服务端配置与客户端配置客户端不能自动更新git上的配置分布式面临的系统配置问题&#xff0c;如何解决 1. 分布式系统面临的配置问题 微服务意味着要将单体应用中的业务拆分成一个个…

前端学习(1289):nodejs模块化的开发规范

demo02.js const add (n1, n2) > n1 n2exports.add add; demo03.js const a require(./demo02.js); console.log(a); 运行结果

spring cloud bus消息总线

解决的痛点: 当git仓库的配置更新后&#xff0c; cloud config 客户端不能获取到配置信息的问题, 需要手动发送请求&#xff0c;刷新配置。 可以参照 spring cloud config cloud busbus消息总线使用rabbitMQ推送消息原理架构实现使用curl命令刷新客户端的配置bus bus配合conf…

前端学习(1290):nodejs模块化的开发导出另一种方式

demo04.js const greeting _name > hello ${_name};module.exports.greeting greeting; demo05.js const a require(./demo04.js); console.log(a); console.log(a.greeting(geyao)); 运行结果 demo04.js const greeting _name > hello ${_name}; const x 100;…

c++ 匿名函数

#include<iostream> #include <cstdlib> using namespace std;int main() {//为了在以后便于区分&#xff0c;我这段main()代码叫做main1autofunc [] { printf("%d\n",1989); };func();system("pause");return 0; } 转载于:https://www.cnblo…

SpringCloud Stream消息驱动

为啥有这个技术&#xff1f;&#xff1f;&#xff1f; 1. 这个stream是操作消息队列的&#xff0c;简化&#xff0c;学习消息队列的成本降低。 2. 可操作rabbitMQ兔子message queue&#xff0c;kafaka&#xff0c;可理解为jdbc可操作oracle, mysql.. 3. spring家的技术学就完了…