分布式应用系统“全景”图
通过借用《Java工程师修炼之道》的一张图,介绍分布式应用系统,从系统分层方面讲,可以分为展现层、网关层、服务层、持久层、中间件层和监控层;每一层都有一种或是多种技术支撑分布式应用系统的运行;下图是一个分布式应用系统的基本逻辑图,通过这张图来介绍分布式应用系统中所用到的技术或技术框架。
后端系统由单体架构转变成分布式架构,都是为了更好的满足后端系统的高可用、可容错、可扩展、可维护、稳定性及安全性的能力,后端技术也是随着这些能力不断进行演化着;我们从分布式系统可视化、网关、服务、数据持久化、监控这个几个方面介绍。
I、客户端(或叫前端)
对于后端系统可视化是指客户端或是前端,现在比较流行的做法是采用前后端分离模式,前端主要用的技术是vue等前端框架。
II、API网关
这里的API网关主要是指后端系统的界面端访问后台服务,一般用Nginx来实现,主要为后端接口提供负载均衡、API访问权限控制、请求转发及安全等。还用需要到一些开源框架,如zuul或spring cloud gateway等。
III、业务应用和后端基础框架
这里的业务应用指的是ToB的内部内部应用系统,也就是现在我们常说的分布式应用系统;比如,银行核心业务系统、客户关系管理系统、信贷系统等;这些业务应用系统是基于后端基础框架开发,有MVC框架、IoC框架、ORM框架、缓存框架等。
- MVC框架如SpringMVC,阿里的WebX等。
- IoC框架如Spring框架。
- ORM框架如Mybatis、Hibernate等。
- 缓存框架如Redis、Memcached、Spring的RedisTemplate。
IV、缓存、数据库、搜索引擎、消息队列
缓存、数据库、搜索引擎、消息队列都是为了支撑分布式应用系统运行;缓存主要解决分布式应用系统中常用数据的使用,比如机构数据、用户数据等,普遍使用的缓存软件有Memcached和Redis;数据库是分布式应用系统做数据持久化存储,主流的数据库包括传统的关系型数据库(MySQL、PostgreSQL等)、分布式数据库(TiDB、GaussDB、 GoldenDB等)、NoSQL(MongoDB、HBase);搜索引擎是解决应用系统对各个维度的信息查询,用得比较多的开源软件是Elasticsearch;消息队列是数据传输的一种方式,用得比较普遍的消息队列包括为日志设计的Kafka、重事务的RabbitMQ等。
V、文件存储
不管是分布式应用还是单体应用,最终都依赖文件的存储;目的是为了保证数据不轻易丢失,或是发生故障也能够保证高可用;具体的存储方案有Hadoop的HDFS、NFS、云服务器的SSD硬盘等。
VI、统一认证中心
统一认证中心就是为了能够集中对分布式应用服务会用到的信息进行管理,主要提供系统的统一授权,如用户注册、登陆验证、Token鉴权等。
VII、单点登陆系统
单点登录系统主要解决用户登录一次就可以访问各个分布式应用服务或系统,如会计核算服务、贷款服务、存款服务等。
VIII、统一配置中心
对所有应用系统或业务应用服务提供一个配置中心,进行集中管理各个应用系统或服务的配置,如携程的apollo。
IX、服务治理框架
当应用系统或服务增多时,调用关联越来越复杂,需要有一种框架来管理这些系统服务,如阿里的Dubbo,Hessian等。
X、统一调度中心
在一些应用系统中,有一些业务场景需要用到定时任务调度,比如批量更新账户状态、代发工资等业务场景,普遍常用有Quartz框架、当当的elasticjob。
XI、统一日志服务
应用系统实现分布式部署后,加大了运维的难度,通过统一日志服务来解决这个问题,如使用ELK等。
XII、监控系统
对于分布式应用系统,监控给运维起到了关键性作用,可以快速定位问题、快速发现资源的不足,比如使用Grafana、Prometheus等。
资源地址
文档地址:https://www.jianshu.com/u/04c92b49e922
Demo地址:https://github.com/diyzhang?tab=repositories