主要负责把业务单体应用改造成微服务架构,协助开发各种微服务组件, 对接各个下游部门需求, 并按照下游部门开发各种组件;定制接口规范;主要技术是springcloud, mysql, spring全家桶, ssh, ssm 等
一、项目名称:美的国际微服务架构
1、项目简介:基于SpringCloud框架进行设计
2、负责模块: 参与SpringCloud框架的搭建
3、职责:后端设计和开发
4、项目技术: springcloud+mybatis
5. 技术实现
1. 注册中心Eureka
搭建Eureka集群来保持高可用性, 避免了某个实例挂掉而影响服务。
2. 负载均衡
客户端请求的负载均衡:
所有的客户端请求通过网关(zuul/gateway)访问后台的服务。
服务之间请求的负载均衡:
服务之间使用RestTemplate和Feign(Netflix组件)相互访问。
3. 基础服务集群
整个微服务架构的基础,任一组件的不可用将导致整体架构不可用,基础组件包括:
1) 认证中心
用户认证
a) 单点登录(SSO)服务器IP白名单和客户端IP黑名单校验
b) 用户登录信息Profile分布式存储、获取和更新
c) 用户菜单、资源和URI权限获取和校验
服务鉴权
a) 服务发现和注册到数据库,生成secret
b) RSA签名算法的秘钥对生成和公钥派发
c) 服务校验和JWT派发(带加密签名的令牌)
d) 服务鉴权信息获取并通过消息总线推送来更新服务缓存的访问权限
秘钥托管
a) RSA加密算法的秘钥对生成
b) 服务校验和私钥派发,用于服务解密功能
c) RSA加密服务提供,用于密文生成
2) 配置中心
使用Spring Cloud Config对配置文件进行统一管理。
Spring Cloud Config是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,Server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,Client通过接口获取数据、并依据此数据初始化自己的应用。
如果服务运行期间改变配置文件,服务是不会得到最新的配置信息,需要解决这个问题就需要引入Refresh。可以在服务的运行期间重新加载配置文件。
当所有的配置文件都存储在配置中心的时候,配置中心就成为了一个非常重要的组件。如果配置中心出现问题将会导致灾难性的后果,因此对配置中心也需要做集群支持高可用性。
3) 基础服务API
将基础配置信息以REST API的方式提供服务给各个产品调用。
4. 监控服务集群
1) 服务监控
Spring Boot Actuator:Actuator是Spring Boot的模块,它在应用中添加了REST/JMS端点,方便监控和管理应用。端点提供了健康检查、指标监控、访问日志、线程转储、堆转储和环境信息等等。
Spring Boot Admin:为actuator端点提供了良好的交互界面,并提供了额外的特性。
2) 断路器监控
a) 熔断机制(断路器)
一个微服务的超时失败可能导致瀑布式连锁反映,使用Hystrix的自主反馈实现的断路器, 防止了瀑布式连锁反映。
b) 断路器套件
Hystrix,监控和断路器
Hystrix Dashboard,监控面板,提供了一个界面来实时查看接口的运行状态和调用频率等。
Turbine,监控聚合。
5. 中间件服务集群: 消息队列服务
使用RabbitMQ来进行模块解除耦,同抗高并发本架构选型。
6. 网关(web/api)
使用Spring Cloud Gateway路由提供动态路由,监控,弹性,安全等的边缘服务。它的具体作用就是服务转发,接收并转发所有内外部的客户端调用。使用Spring Cloud Gateway可以作为资源的统一访问入口,同时也可以在网关做一些权限校验等类似的功能。
7. 持久层
基础服务和公共服务由架构组统筹管理和开发,使用单独的mySQL数据库和Redis缓存数据库,各产品互相独立数据库和redis使用,以此达到持久层的解耦,避免不合理的设计对整体的影响
8. 消息总线
使用Spring Cloud Bus,基于RabbitMQ,实现服务鉴权信息的推送、配置中心的热部署功能
角色 | 职位 |
负责人 | java工程师 |
队员 | 后端工程师 |