大会的主题是围绕云计算、大数据、人工智能在互联网时代的应用展开。演讲专家介绍的产品、方案和技术都是业界领先的。结合到实际应用中,我感觉有以下学习心得和体会:
技术学习方面:
重点是对企业级服务和架构设计技术方面进行了关注,对目前主流的大型互联网系统架构和企业级软件架构设计的几场演讲着重进行了学习。
目前Web系统架构设计大体有三种形式:单体应用架构,水平分层架构和微服务架构。
具体理论介绍就不罗列了,可参考大会演讲者孙炫的文章:
归纳起来就是大部分中小型的应用都是单体应用,虽然代码模块划分采用的是MVC框架,但是整体就打包成一个web应用包发布。单体应用业务功能单元耦合严重、扩展性差,针对复杂度高的业务逻辑,开发迭代速度难以提高。
大型的应用应该采取水平分层(按照应用场景(调用方)进行拆分)架构,网关层、业务层、数据层等每一层都是一个独立进程的web应用,层与层之间通过webservice等方式进行通讯,每层都可以独立升级发布,耦合度降低;更高级点的就是SOA,再对业务层进行垂直拆分,按业务单元功能划分出一个个独立的服务,每个服务之间通过总线进行交互,但每个服务没有进一步进行水平拆分。
大型互联网和金融系统面临的都是高度复杂的业务需求和更快速的开发迭代周期,常规的水平分层即使用SOA也难以控制。所以近几年又提出了微服务架构,按照业务领域对系统进行垂直拆分的同时每个独立的服务又按照调用层进行了水平拆分。当然系统的开发起点要求也更高,部署、运维都需要更专业的团队。
回到我们目前的开发水平,单体开发能学明白搞好就不错了。分析上面的架构演进可以发现我们虽然没有能力去对系统架构进行物理上的服务功能的垂直分层+水平分层,但水平分层的思想单体应用里也肯定早有体现,就是基于MVC框架对静态代码划分控制层、业务层、数据层来实现的,而垂直分层的话每个按照业务领域重新拆分的服务类、调用它的控制类,它调用的数据类三者合并起来起来作为一个个服务单元不就是垂直分层了吗。虽然不是物理分层,代码也都耦合在一个应用里,但感觉也类似一个单进程的静态微服务了。当然具体有没有用还得在实践中通过项目来体会。