微服务架构案例(05):SpringCloud 基础组件应用设计
本文源码:GitHub·点这里 || GitEE·点这里
更新进度(共6节):
01:项目技术选型简介,架构图解说明
02:业务架构设计,系统分层管理
03:数据库选型,业务数据设计规划
04:中间件集成,公共服务管理
05:SpringCloud 基础组件应用设计
一、组件应用规划
1、注册中心
Eureka 组件是 Netflix 开发的,用于定位服务,基于RESTFul方式实现服务注册与发现。包括一个EurekaServer服务端(通常是指微服务中的注册中心) 和EurekaClient客户端(通常指微服务中的业务服务)。Eureka支持高可用的配置,当注册中心发现有故障的服务时,Eureka就会转入自动保护模式,故障时不影响服务的发现和注册,当故障恢复正常时,注册中心的服务会进行状态同步,继续提供服务。
2、服务调用
Feign 组件是一个声明式的 WebService客户端。在Eureka注册的服务中,可以使用Feign接口的形式来进行相关服务间的请求调用,并提供超时回退,快速熔断的相关特性。Feign是一个便利的RestFul框架,简化调用,通过ribbon在注册服务器中找到服务实例,然后对请求进行服务分配,实现了负载均衡的效果,默认采用轮询算法。
3、服务网关
GateWay网关,可以让所有客户端请求先通过微服务网关,跟网关进行交互,由网关进行各个微服务的请求转发,客户端(前端)对多服务架构无感知。降低客户端与微服务之间的交互耦合度;便于监控,可在网关中监控数据;在网关层统一处理认证,规划切面编程;也就是说与业务本身功能无关的公共逻辑可以在网关层统一封装实现,类似设计模式中的门面模式。
二、注册中心
1、服务端配置
eureka: server: enable-self-preservation: false eviction-interval-timer-in-ms: 15000 instance: prefer-ip-address: true client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://127.0.0.1:5001/eureka/
2、客户端配置
eureka: instance: prefer-ip-address: true client: service-url: defaultZone: http://127.0.0.1:5001/eureka/
三、Feign组件
1、Feign接口
@FeignClient("MOPSZ-SOFT-ROCKET") public interface UserSearchFeign { @GetMapping("/mq/user/search/sendBookSearch") void sendBookSearch (@RequestParam("msgContent") String msgContent) ; }
2、Feign接口实现
@RestController public class UserSearchController implements UserSearchFeign { @Override public void sendBookSearch(String msgContent) { } }
3、接口配置
该配置文件在实现Feign接口的项目中配置就好,也可针对特定方法配置。
feign: hystrix: enabled: true client: config: feignName: connectTimeout: 60000 readTimeout: 60000
4、Feign接口调用
@Resource private UserSearchFeign userSearchFeign ; userSearchFeign.sendBookSearch("");
四、服务网关
1、网关组件配置
zuul: # 前缀,可以用来做版本控制 prefix: /v1 # 禁用默认路由,执行配置的路由 ignored-services: "*" routes: # 配置 Token 服务 pro6601: serviceId: mopsz-basis-token path: /api/6601/** # 配置 UserClient 服务 pro6102: serviceId: mopsz-user-client path: /api/6102/**
- 配置FilterConfig进行用户Token认证拦截;
- 配置FallBackConfig进行服务降级响应管理;
2、项目部署
在项目上线后,对外暴露一个网关服务端口,其他服务端口不对外暴露,所有的请求都必须通过网关拦截或者转发,这就是微服务提供服务的一种常见方式。
五、源代码地址
GitHub·地址 https://github.com/cicadasmile/husky-spring-cloud GitEE·地址 https://gitee.com/cicadasmile/husky-spring-cloud
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Consul场景用例:服务注册(Service discovery) & 服务网格(Service mesh)
Consul概念 Easy Service Networking 便捷的网络服务 Consul是一个可以跨任何运行时平台和公共或私有云提供连接和保护服务的网络服务解决方案。 应用场景 服务注册与发现服务注册,集成了健康检查,以及DNS和HTTP协议接口用来服务注册与发现。 背景服务端负载平衡在当前多变的世界中效率不高。负载平衡器通常需要前置于应用层并为其提供静态IP,这增加了成本,增加了延迟,且引入了单点故障,并且随着服务的扩展必须 更新配置。 解决方案灵活动态的服务注册基础架构。作为替代传统负载均衡器,在动态的基础架构引入了服务发现机制进行通信。服务发现机制使用注册表来保存服务、其位置和运行状况的实时列表。(client-end)服务查询注册表以发现上游服务的地址,然后直接连接。这套积极允许服务自动伸缩,并在没有负载平衡器介入的情况下优雅地处理故障。 特性1)服务注册Consul维护了一个包含所有节点和服务以及它们当前健康状态的注册列表。这方便了操作人员或运营商可以及时了解掌握当前环境状态,应用情况以及自动化运维工具通过HTTP协议的API与动态基础设施交互。 2)基于DNS的服务查...
- 下一篇
哪种人是软件设计中的稀缺型人才?
阿里妹导读:好的系统架构离不开好的接口设计,因此,真正懂接口设计的人往往是软件设计队伍中的稀缺型人才。为什么在接口制定标准中说:一流的企业做标准,二流的企业做品牌,三流的企业做产品?依赖倒置到底是什么意思?什么时候使用接口才算合理?今天,阿里匠人——张建飞将为你详细解读。 接口有什么好处(Why) 在我看来,接口在软件设计中主要有两大好处: 1. 制定标准 标准规范的制定离不开接口,制定标准的目的就是为了让定义和实现分离,而接口作为完全的抽象,是标准制定的不二之选。 这个世界的运转离不开分工协作,而分工协作的前提就是标准化。试想一下,你家的电脑能允许你把显卡从NVIDIA换成七彩虹;你家的灯泡坏了,你可以随便找一个超市买一个新的就可以换上;你把数据从Oracle换成了MySQL,但是你基于JDBC写的代码都不用动。等等这些事情的背后都是因为
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作