spring-cloud 组件
2021-07-16 18:59:36 0 举报
spring-cloud 组件
作者其他创作
大纲/内容
order-service
日志
1.服务启动时需要加载配置
eureka-client
ribbon
服务注册
http://ip:port/...http://ip:port/...http://ip:port/...http://ip:port/...
application.properties
Filter
ip列表缓存在本地内存
订单服务
user-service
网关
Predicates
微服务
订阅消息
Spring Cloud Gateway网关
OrderService
Spring cloud Bus
A节点
dashboard
心跳检测
获取令牌桶中令牌只能拿一个
git pull
调用后续业务服务
route2
返回令牌
服务注册/获取服务列表
Eureka 服务注册中心
r/s
bus
服务端集群
Dev
根据心跳结果剔除无效机器
NettyServer
eureka客户端搭建
kafka
?
客户端代码demo:package com.john.springcloud.demouserservice.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.cloud.client.ServiceInstance;import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;import org.springframework.context.annotation.Bean;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate;/** * 这个Demo是基于restTemplate实现的远程服务调用 * 采用了springCloud中的netfinx-ribbon组件实现的基于客户端的负载均衡 * 默认采用轮询的策略 */@RestControllerpublic class UserController { @Autowired RestTemplate restTemplate; @Bean public RestTemplate getRestTemplate() { return new RestTemplate(); } @Autowired LoadBalancerClient loadBalancerClient; @RequestMapping(\"/user/{id}\") public String getOrder(@PathVariable(\"id\") String id){ //根据服务的id获取服务提供者的地址列表,然后根据负载均衡算法将,请求分发下去 ServiceInstance serviceInstance = loadBalancerClient.choose(\"spring-cloud-order-service\"); String url= String.format(\"http://%s:%s\
Consumer
一、在要发布的微服务项目中引入eureka客户端starter,二、要维护和eureka服务端相同的springcloud版本,直接的方式是,拷贝dependencyManagement过来三、在配置文件中添加将服务注册到eureka注册中心的配置,如下:#指向服务注册中心的地址eureka.client.service.url.defaultZone=http://localhost:8761/eureka
Config Client
服务端无代理式调用,直接将服务端的IP维护在客户端的配置文件中
publisher message
服务注册中心
首先在客户端添加依赖: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>在添加一个服务端开放的接口:注意:接口签名和服务端一致/** * 服务提供者接口 */@FeignClient(\"spring-cloud-order-service\")public interface OrderServiceFeignClient { @RequestMapping(\"/order/{no}\") public String queryOrderByNo(@PathVariable(\"no\") String no);}然后在业务类中注入OrderServiceFeignClient,最后调用package com.john.springcloud.demouserservice.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class OrderFeignClientController { @Autowired OrderServiceFeignClient orderServiceFeignClient; @GetMapping(\"/test\") public String test(){ return orderServiceFeignClient.queryOrderByNo(\"11111\"); }}再在启动类上添加 @EnableFeignClients 注解开启Feign的客户端即可
Git
库存服务
配置中心
通过在客户端配置的方式维护服务端ip列表
注册中心
令牌桶实现
cache
eureka服务端搭建
pull
服务的注册
整合前面的所有组件,构建分布式架构图
Spring中系统的变量谁来做? Environment
git pull/git push
ribbon--请求分发组件
定时任务间隔多长时间去拉一次服务ip列表
完成以上操作就可以在eureka的中心上看了,eureka注册中心地址: http://ip:port 如上:localhost:8761
根据service-name分配IP
在启动类上加注解开启EurekaServer服务@EnableEurekaServer
kafka/RibbitMQ
2.修改某个配置信息
评论服务
(限流操作)
3.配置信息的同步
C节点
Open Feign--远程通讯
限流
server list
Config Server
实现方式:
Spring Cloud gateway
acutuator/bus-refresh/monitor
Config-Server
push
Subcribe
feign
eureka-server
actuator/refresh
UserService
客户端
分配ip
调用具体的服务
认证
IRule
返回指定服务的地址列表
ribbon根据具体的负载均衡算法计算分配服务提供者的IP给消费者
如果此处令牌桶空了,拿不到令牌,则失败
github
key=order-service
Remote order-service
搭建eureka服务端,只要导入响应的eureka的starter,然后再配置文件中加入如下配置即可:#定义应用名spring.application.name=eureka-server#端口号server.port=9000#指向服务注册中心的地址eureka.client.service.url.defaultZone=http://localhost:9000/eureka#关闭启动时注册,可以避免无服务注册报错,可以忽略eureka.client.register-with-eureka=falseeureka.client.fetch-registry=false
回调Consumer监听
route1
publish
rabbit
Eureka
商品服务
long-poll
r/s:表示每秒生成的token的速率如果 值为10,则表示每秒生成10个令牌
http
服务发现
依托ribbon获取机器列表实现负载均衡
burst100
restTemplate
P节点
Spring Cloud Config分布式配置中心
请求
B节点
0 条评论
下一页