共计 1478 个字符,预计需要花费 4 分钟才能阅读完成。
常用的 Spring Cloud 体系架构
系统部署采用阿里云平台,采用的技术架构为 SpringCloud.
采用在线阿里云架构制图工具: Freedgo Design 地址:https://www.freedgo.com, 具体架构如下:
整体架构
主要居于 Spring Cloud 的分布式微服务架构。主要功能包括:
服务注册发现中心(Eureka server)
通过服务发现可以抽象出部署服务的物理位置如 IP,服务调用通过了逻辑名称而不是实际的物理位置,同时服务发现也处理了注册和注销。
服务配置中心(config server)
通过集中式的服务来处理应用程序配置数据。做到无论启动多少个微服务实例,这些实例始终使用相同的配置,同时服务的配置可以和微服务系统分离
服务网关(ZUUL)
通过 ZUUL 网关,可以强制执行一些功能如内容过滤,路由转发,过滤器等等
Spring Sleuth & ZIPKIN(分布式服务跟踪)
通过 Sleuth 相关 ID 进行全链路跟踪,可以分析服务调用的性能
事件驱动及异步消息
用于处理异步事件如短消息推送,邮件发送等。
用户认证中心(auth2)
ZUUL 网关
ZUUL 网关主要的功能
路由及过滤器设置
通常在 ZUUL 网关设置过滤器包括前置过滤器、后置过滤器、路由过滤器,可以自定义一些逻辑,在大多数情况下,这种自定义逻辑用于强制执行一组一致的应用程序策略,如安全性、日志记录和对所有服务的跟踪等等。
路由的设置可以指定路由地址 URL 对应的微服务如下图:
服务注册与发现:
ZUUL 网关服务器通过注册到 Eureka 服务器,实现了 Eureka 上注册的微服务的发现从而转发用户的请求到各应用模块,网关服务器中 Ribbon 同时会缓存微服务相关信息以减少对 EureKa 访问。
微服务应用
Oauth2 授权访问
ZUUL 网关负责请求的路由转发,Request 请求不仅仅来在用户浏览器,有可能是微服务之间的相互调用。
登录用户请求或服务之前调用会在 request 请求头中携带 Authorization 头信息来表示当前用户的身份信息,
Http Restful Api
微服务应用采用 Spring RestController 对外发布 Http Restful Api 服务,
微服务之间的调用
微服务之间相互调用而不必知道被调用者所在位置是通过 Eureka 服务发现实现,当微服务启动时会注册自己到 Eureka 服务中心,服务消费者可以使 Ribbon 来进行交互。有三种方式的调用:
- Spring DiscoveryClient
- 启用了 RestTemplate 的 Spring DiscoveryClient
- 通过 Netflix Feign 客户端方式
部署方案 (docker)
采用 Docker 通过 spotify 的 docker-maven-plugin 工具进行 docker image 进行打包镜像
灰度测试
通过 ZUUL 的过滤对新上线的服务做路由的权重算法,做到限流,A/ B 测试。
平台开发
- 开发语言:java,Java 是一种可以撰写跨平台应用程序的面向对象的程序设计语言。
- 开发工具:eclipse,Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
- 主要使用的开源软件
软件 | 功能 | 版本 |
---|---|---|
JDK | JAVA 开发 SDK 包 | 1.8 以上 |
Ubuntu | Linux 服务器操作系统 | 14 |
MySQL | 数据库 | 5.7+ |
Maven | java 项目构建工具 | 4.0 |
Spring Framework | 系统架构 | 5.0 以上 |
Spring cloud | 分布式微服务 | 2.0+ |
kafka | 消息订阅发布框架 | |
Redis | 高性能 Key value 存储 | |
Docker |