博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring cloud
阅读量:6478 次
发布时间:2019-06-23

本文共 6236 字,大约阅读时间需要 20 分钟。

1 版本说明

  Spring boot 版本: 2.1.3.RELEASE 

  Spring Cloud 版本:Greenwich.RELEASE

2 搭建Eureka服务侧

 

pom依赖如下:

1 
2
4
4.0.0
5
6
org.springframework.boot
7
spring-boot-starter-parent
8
2.1.3.RELEASE
9
10
11
com.linxi.jia
12
eureka-server
13
0.0.1-SNAPSHOT
14
eureka-server
15
eureka-server project for Spring Boot
16 17
18
1.8
19
Greenwich.RELEASE
20
21 22
23
24
org.springframework.cloud
25
spring-cloud-starter-netflix-eureka-server
26
27 28
29
org.springframework.boot
30
spring-boot-starter-test
31
test
32
33
34 35
36
37
38
org.springframework.cloud
39
spring-cloud-dependencies
40
${spring-cloud.version}
41
pom
42
import
43
44
45
46 47
48
49
50
org.springframework.boot
51
spring-boot-maven-plugin
52
53
54
55 56
57
58
spring-milestones
59
Spring Milestones
60
https://repo.spring.io/milestone
61
62
63 64

 注意:Eureka即是服务端,也是客户端,默认配置是将自己注册到Eureka Server 上,所以在配置客户端信息的时候,也需要配置客户端注册的地址,当然也可以通过配置的形式关闭。

配置文件如下:

  

Eureka采用高可用部署方式,提供三个节点,三个配置文件只有 Eureka 服务侧的端口信息不一样,其余信息都一样。

修改本地hosts文件,模拟三个不同节点:

application.yml文件:

1 spring: 2   application: 3     name: eureka-server 4 logging: 5   level: 6     root: info 7 server: 8   port: 8761 9 eureka:10   client:11     registerWithEureka: false # 是否自身注册到 Eureka 服务器上面 默认  true12     fetchRegistry: false  #是否从 Eureka Server 获取服务提供的信息,默认 true13     serviceUrl:14       defaultZone: http://127.0.0.1:8761/eureka/,http://127.0.0.1:8762/eureka/,http://127.0.0.1:8763/eureka/ # 当前的eureka版本,服务端同时也是户端,所以必须要将客户端注册到服务端上面去15   instance:16     hostname: node117     # 为注册的 clinet 配置显示的ip值,默认显示的是主机名称18     #perferIpAddress: true19     #instance-id: 0.0.0.0:8888

 

启动方式: 在应用启动类添加注解  @EnableEurekaServer

 3 以client搭建生产者

  

配置文件:

1 server: 2   port: 8764 3 spring: 4   application: 5     name: client-provider 6 eureka: 7   client: 8     registerWithEureka: true 9     fetchRegistry: true10     serviceUrl:11     # 需要注册到的 eureka 服务端信息12       defaultZone: http://127.0.0.1:8761/eureka/,http://127.0.0.1:8762/eureka/,http://127.0.0.1:8763/eureka/13   instance:14     hostname:  node115     # 为注册的 clinet 配置显示的ip值,默认显示的是主机名称16     #perferIpAddress: true17     #instance-id: 0.0.0.0:888818 logging:19   level:20     root: info

启动:在应用启动类上面添加注解:@EnableEurekaClient

注意:上述配置文件中包含两个配置项,spring.application.name 和 eureka.client.instance.hostname

 1. 前者代表当前应用的名称,在消费者进行消费时,是依靠该应用名进行服务消费。比如A应用以n台主机进行部署成集群的方式,如果直接调用ip进行访问,则没有办法实现负载均衡过程。

    2. 后者代表一个Eureka Client实例主机名称,比如点击查看8766实例的详细信息时,跳转的域名就是该配置项的值。

 

跳转截图如下:

   

Eureka页面

下面截图描述的是注册到当前 Eureka Server 上面的 clinet 端。

下面截图描述的是当前client 注册哪些 Eureka Server 上:

完善生产者功能,向服务中心发布一个服务:

package com.linxi.jia.com.linxi.jia;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;import java.util.Map;/** * Created by 156 on 2019/2/19. */@RestController@RequestMapping("/get")public class TController  {    @Value("${server.port}")    private String port;    @GetMapping("/info")    public Map
getInfo(){ Map
info = new HashMap
(); info.put("name","zhangsan"); info.put("age","20"); info.put("port",port); return info; }}

4 以client创建消费者

 Ribbon是Neflix发布的负载均衡器,它有助于控制HTTP和TCP的客户端行为,为Ribbon配置服务提供列表后,Ribbon就可以基于某种负载均衡算法,自动的帮助服务消费者去请求。

在生产者基础上新增依赖,并创建 RestTemplate 实例

org.springframework.cloud
spring-cloud-starter-ribbon

由于客户端本身已经集成,所以无需引入:

 

创建 RestTemplate 实例,同时开启负载均衡。

package com.linxi.jia.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;/** * Created by 156 on 2019/2/19. */@Configurationpublic class RibbonCfg {    @Bean    @LoadBalanced    public RestTemplate restTemplate(){       return new RestTemplate();    }}

创建调用实例:

package com.linxi.jia;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate;import java.util.Map;/** * Created by 156 on 2019/2/19. */@RestController@RequestMapping("/test")public class TController {    @Autowired    private RestTemplate restTemplate;    public Map getInfo(){        // 通过 Eureka 服务端的 应用名称调用,无需考考虑端口和ip        return restTemplate.getForObject("http://CLIENT-PROVIDER/get/info",Map.class);    }}

修改配置文件,添加启动注解。

消费:http://localhost:8768/test/get

分别消费多次,观察负载均衡情况。

 

 

转载于:https://www.cnblogs.com/nevegiveup/p/10399737.html

你可能感兴趣的文章
原生Js交互之DSBridge
查看>>
Matlab编程之——卷积神经网络CNN代码解析
查看>>
白洋淀周末游
查看>>
三篇文章了解 TiDB 技术内幕 —— 说计算
查看>>
copy strong weak assign的区别
查看>>
OpenCV 入门
查看>>
css 3D transform变换
查看>>
ele表格合并行之后的selection选中
查看>>
正则表达式分解剖析(一文悟透正则表达式)
查看>>
解决UILable标点符号居中的问题
查看>>
HTML5新特性教程
查看>>
ImageOptim-无损图片压缩Mac版
查看>>
12 Go语言map底层浅析
查看>>
vue-resumer 项目中 element-ui 遇到的 textarea autosize 问题
查看>>
以主干开发作为持续交付的基础
查看>>
PHP扩展库PEAR被攻击,近半年下载者或被影响
查看>>
传统运维团队转型应该注意哪些问题?
查看>>
JavaScript函数(二)
查看>>
Airbnb改进部署管道安全性,规范部署顺序
查看>>
腾讯最大规模裁撤中层干部,让贤年轻人
查看>>