下面的内容只是一些概要的介绍,更多具体的内容,请下载附件查看。
另外特别声明,该文档的作者不是我。具体是哪位京东的同时已经不记得了,这里表示下敬意。
概述
SOA七大阶段
我用人话翻译一下啊。
- 基础架构
这一部分主要解决系统的高可用性和资源利用率的问题
指的一般是运维层面的事情。比如早期是单机的,然后有了HA或者Nginx,然后又有了虚拟化方面的技术比如:vmware和openstack, 更后面又有了docker。还有一部分是存储技术的发展带来的一些应用。
基于存储技术,解决了一些数据同步和备份的问题,比如基于存储技术可以在不使用主从配置的情况下就能够做集群Mysql等。
基于虚拟化的技术解决了弹性云的问题,通过一些监测手段来实时监控虚拟环境,然后动态的修改环境的配置来达到资源最大的利用率。
- 系统架构
这一部分主要关注的是可扩展性和性能问题
主要使用的技术是分布式调度框架,MQ中间件,restful等
- 应用软件
主要解决可扩展和模块化的问题
这边主要靠的是设计能力了,并没有框架能够很好的解决问题, 把功能聚合成单独的模块和系统,然后单独的供给其他模块和系统调用。 通常都是部门为单位了。
这边通常会给沟通方面带来比较大的问题,容易产生部门墙,对于管理的要求也更高一些。各种文档、接口说明等等会比小的团队要求高很多。
到这里有一个云平台准们管理API接口就是很必要的了。
- 流程方法
主要是建模方式、最具参考价值的是面向对象、面向服务和领域模型技术。
- 业务角度
最终的对外的接口, 是由很多底层接口拼接而成的。基本偏向于纯业务了。
发展阶段示例
可以简单认为最后一张图就是加入了分布式调用中间件(如motan), 和数据库中间件(云存储,主要是基于代理的)。
架构实施步骤
重点说一下,这个是一个不停的迭代的过程, 就像代码重构一样,一遍又一遍的梳理和迁移。
我觉得架构都是慢慢改出来的,并不是一次设计出来的。
愿景
好吧,所有公司的分布式架构都是这样的愿景:
总体架构原则
简单实用的原则, 字字珠玑。
质量要求
这里涉及非功能部分和管理方面的工作量很多。
- 可支持、可测试 可能需要引入挡板系统,并且在管理上提测前需要加上单元测试覆盖率等指标
- 设计质量 会需要开概要设计评审会,对文档和代码注释覆盖率都有要求
- 运行时质量 这边需要引入很多框架,比如安全方面的shiro,单点登录,auth2.0, 为了可管理需要引入各种管理端,比如基于zk的配置管理。分布式调用框架的管理。系统存活监控等等。
京东架构发展
这里主要可以看出其实架构的提升主要是因为各种新技术的使用