服务化、大型系统设计等方面知识分享2016年1月20日目录1传统设计开发方式的痛点2为什么要服务化3服务化架构能解决什么问题4架构设计中我们关注的重点在哪里5服务化架构设计的方法6大型系统设计考虑的要素及设计方法•耦合性强系统内各模块的调用在代码级别,从不同子系统角度看耦合性较强。•可扩展性弱由于系统耦合性强,扩展功能时仅限于代码级别,对于复杂度高的系统,扩展性越来越弱。•复用性弱如果代码层级设计的复用性较好,也仅限于同一系统的复用,不同子系统的复用较弱。•契约接口停留在代码层级,子系统间接口不标准使用面象对象设计方法的系统的契约接口仅限代码接口,对于子系统间的接口标准各开发团队不统一,如是不同团队的系统对接工作量会加大,交付时间会延长。•不灵活对程序做任何细微修改,都需要将整个应用部署完成后才能看到变化。如果多人开发还需等待所有人员完成各自的开发。降低了团队的灵活性和功能交付频率。目录1传统设计开发方式的痛点2为什么要服务化3服务化架构能解决什么问题4架构设计中我们关注的重点在哪里5服务化架构设计的方法6大型系统设计考虑的要素及设计方法•解耦单个服务内部逻辑内聚,不依赖其他服务的内部工作,实现解耦。•各服务逻辑内聚,易于扩展服务内部高度聚合,对于新增的功能仅需独立开发、测试,实现扩展。•各服务间接口契约不变的情况下,可独立变化在各服务间的接口契约不变的情况下,各子系统独立升级调整,对其他服务完全没有任何影响。•复用服务是以系统级别存在,任何使用者只需调用,复用性强。•灵活性服务独立存在,各服务开发团队独立进行开发、测试、部署,降低团队间的沟通成本。目录1传统设计开发方式的痛点2为什么要服务化3服务化架构能解决什么问题4架构设计中我们关注的重点在哪里5服务化架构设计的方法6大型系统设计考虑的要素及设计方法•扩展性现在的系统随着时间的变化,需求规模不断扩大,所以系统对扩展性的要求是核心要求。服务化的设计实现了高内聚松耦合,对于功能需求的扩展有着良好的支持。•伸缩性随着系统规模的增长,用户量、数据量都会不断的增长,服务化的设计有利于系统伸缩性的实施。•性能服务化的设计有利于通过系统级性能优化,如异步操作、缓存、集群等。•可用性系统高可用的主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份,通过集群的方式实现失效转移,以保证系统的高可用。服务化的出现是为了解决需...