IT系统设计从早期的Jsp/Servlet类应用为主,到今天的微服务、ServerLess、Docker、Paas、CI&CD、Devops。目标:高效研发、弹性扩展、高效运维。手段:Divide&Conquer (分层,解耦合)。
协议层从早期的HTTp+XML&SOAP 到今天的Restful (Spring)& 轻量级RPC (Dubbo, gRpc),协议的效率和内容自描述性方面得到了很大提高;
功能分离:缓存和消息队列得到了广泛的应用。
数据存储:各类Nosql(Cassandra、Hbase、MongoDB、Nero4J等) 数据库的出现极大丰富了数据存储的选择。
微服务框架:Spring Cloud, Dubbo 等,简化了微服务开发和治理工作
当前一些有自研需求的公司逐步开始在已有Iaas平台基础上,引入Docker,基于K8s实现服务(容器)的治理,逐步实现DevOps & CICD 目标。
实际应用开发中,典型的应用首先会对应用进行分层,客户端层(微信客户端、web、android、ios)和服务层分离,这样可以各层实现自我优化;服务层通过分布式技术,使用微服务设计理念,实现服务的弹性扩展和支撑能力;数据层通过分库分表、读写分离等技术扩展数据存储层面的能力。
对于技术人员来说,需要了解核心的设计思想,在选择技术框架时,能够根据不同的层分析不同的适用原则选择框架,上线运维过程中能够快速定位问题,并用合适的方式来解决。