整体架构图
使用或对接方
Web及API网关
各业务系统微服务
数据存储
运行环境
微服务与容器化
微服务
利用SpringCloud微服务解决方案,构建一个弹性 、
可伸缩、可扩展性高的系统
容器化
利用K8S&Docker快速部署和管理微服务,并进行
服务的资源隔离与资源伸缩
注册中心
利用spring eureka搭建微服务注册中心,提供服务发现与注册并实
现负载均衡和故障转移。通过Eureka可能轻松的构建一个弹性、 可伸
缩、可扩展性的注册中心。Eureka负 载均衡器,通过对流量、资源使
用等因素,提供了更加合理的加权负载均衡策略服务。Eureka 具有心
跳检测、健康检查和客户端缓存等多种机制提高了服务系统的灵活性
Eureka Server
提供服务注册和发现
Service Provider
服务提供方
将自身服务注册到Eureka,从而使服务消费方能够找到
Service Consumer
服务消费方
从Eureka获取注册服务列表,从而能够消费服务
spring cloud zul|网关
Zuul的核心是过滤器,这些过滤器
类型对应于请求的典型生命周期
PRE:这种过 滤器在请求被路由之前调用。我们可利用这种过滤器实现身
份验证、在集群中选择请求的微服务、记录调试信息等。
ROUTING:这种过滤器将请求路由到微服务。这种过滤器用于构建发送给
微服务的请求,并使用Apache HtpCllen威Nettix Rlboon请求微服务。
POST:这种过滤器在路由到微服务以后执行。这种过滤器可用来为响应添
加标准的HTTP Header.收集统计信息和指标、将响应从微服务发送给客
户端等。
ERROR:在其他阶段发生错误时执行该过滤器。除了默认的过滤器类型,
Zuul还允许我们创建自定义的过滤器类型。例如,我们可以定制一种
STATIC类型的过滤器。直接在Zuu中生成响应,而不将请求转发到后端的
微服务。
Netflix Hystrix
Zuul的核心是过滤器,这些过滤器
类型对应于请求的典型生命周期
PRE:这种过 滤器在请求被路由之前调用。我们可利用这种过滤器实现身
份验证、在集群中选择请求的微服务、记录调试信息等。
ROUTING:这种过滤器将请求路由到微服务。这种过滤器用于构建发送給
微服务的请求,井使用Apache Htpllent或Nettx Rlboon请求微服务。
POST:这种过滤器在路由到微服务以后执行。这种过滤器可用来为响应添
加标准的HTTP Header.收集统计信息和指标、将响应从微服务发送给客
户端等。
ERROR:在其他阶段发生错误时执行该过滤器。除了默认的过滤器类型,
Zuul还允许我们创建自定义的过滤器类型。例如,我们可以定制一种
STATIC类型的过滤器,直接在Zuw中生 成响应,而不将请求转发到后端的
微服务。
配置中心Apollo
Apollo (阿波罗)是携程框架部门门研发的分布式配置中心,
能够集中化管理应用不同环境、不同集群的配置,配置修
改后能够实时推送到应用端,并且具备规范的权限、流程
治理等特性,适用于微服务配置管理场景
提供界面操作管理
统一管理不同环境、不同集群的配置
配置修改实时生效(热发布)
版本发布管理
灰度发布
权限管理、发布审核、操作审计
客户端配置信息监控
全链路日志跟踪
Pinpoint是一-款对Java编写的大
规模分布式系统的APM工具,
追踪每个请求的完整调用链路,
收集调用链路上每个服务的
性能数据
Pinpoint四大组件
Pinpoint-Collector:收集各种性能数据
Pinpoint- Agent:和自己运行的应用关联起来的探针
Pinpoint-Web:将收集到的数据显示成WEB网页形式
HBase Storage:收集到的数据存到HBase中
分布式文件系统 fastdfs
FastDFS是一个开源的高性能分布式文件系统(DFS)。
它的主要功能包括:文件存储,文件同步和文件访问,
以及高容量和负载平衡。主要解决了海量数据存储问题,
特别适合以中小文件(建议范围: 4KB < file_ size <50
0MB)为载体的在线服务。
FastDFS系统有三个角色:跟踪服务器(Tracker Server)、
存储服务器(Storage Server)和客户端(Client)。
Tracker Server:跟踪服务器,主要做调度工作,起到
均衡的作用:负责管理所有的storage server和
group.每个storage在启动后会连接Tracker. 告知
自己所属group等信息,井保持周期性心挑。
Storage Server:存储服务器,主要提供容量和备份服
务:以group为单位,每个group内可以有多台
storage server,数据互为备份。
Cilient:客户端,上传下载数据的服务容,也就是我们
自己的项目所部署在的服务器。
模板引擎 FreeMarker
FreeMarker是一个模板引擎, 一个基于模板生成文本
输出的通用工具,使用纯Java编写FreeMarker被设计
用来生成HTML Web页面,特别是基于MVC模式的应
用程序
FreeMarker的特性:
()不限输出目标
使用FreeMarker可以输出各种文本,如HTML、 XML、 RTF、 Java源代码等等,这样很容易嵌入各种类型的软件产品中。
(2)通用
FreeMarker是轻量级,只需要基本的Java环境,不需要任何的Web或其它环境支持。所以任何Jawa工程都可以通用,
(3)插件式模板载入器
FreeMarker可以从任何源载入模板,如本地文件、数据库等等
(4)按需生成文本
可以将生成的文本流保存到本地文件、作为Emal发送、从Web应用程序发送它返回结Web浏览器。
(5)强大的模板语言
FreeMarker拥有所有常用的指令: include. 1/elsei/eise 循环结构等。
可以在模板中创建和改变变量
几乎在任何地方都可以使用复杂表达式来指定值
(6)通用数据模型
FreeMarker不是直接反射到Java对象,Java对象通过插件式对象封装,以变量方式在模板中显示。
(7)为MVC模式设计
分离可视化设计和应用程序逻辑:分离页面设计员和程序员。
分布式日志服务
flume+ kafka+EL .K
Flume:分布式的日志收集系统,它将各个服务
器中的数据收集起来并送到指定的地方去。
Kafka:接收用户日志的消息队列
Logstash:做日志解析,统- -成json输出给
Elasticsearch
Elasticsearch:实时日志分析服务的核心技术,
一个schemaless,实时的数据存储服务,通过
index组织数据,兼具强大的搜索和统计功能。
Kibana:基于Elasticsearch的数据 可视化组件,
具备超强的数据可视化能力。
容器化部署docker
Images: Docker镜像, 用于创建Docker容器的模板
Container: Docker容器,独立运行的一个或者一组应用
Client: Docker客户端,使用Docker Api与Docker的守护
进程通信。
Host: Docker主机,一个物理或者虚拟的机器用于执行
Docker守护进程和容器
Registiy: Docker仓库,用来保存镜像
Machine: -个简化Docker安装的命令行工具,比如VirtualBox、
Digital Ocean、Microsoft Azure。
动态扩容与缩容
监控中心实时监控每个微服务的压力状况
达到设置阈值则会自动创建并启动新的节点
若微服务压力下去后则会自动释放新增的资源