本章要点
- 互联网发展三阶段
- 互联网架构演进之路
1.互联网发展三阶段
PC互联网 ------> 移动互联网 ------> 物联网(IOT)
-
互动形式
1)互动1.0:内容在线;单一互动(一个中心对多点点广播模式);门户网站(三大门户),企业门户网站,提供一些信息服务
2)互动2.0:以互动为核心;产品有了“关注”,因为“关注”互动产生了网络效应,说的人越多,关注的人越多;新浪微博、Twitter等,关注的网络效应;搜索等
3)互联3.0:群组和朋友圈,把关注一对一的关系,变为更广泛的多对多的关系,形成了真正的互联网形态,人越人联系的更加紧密;微信,facebook,让我们互联,新诞生的一些具有影响力的名词,群主,朋友圈等 -
发展特点
1)业务功能越来越多,越来越复杂
2)万物互联,数据量越来越大
3)请求量越来越多,需要更好的更高的用户体验需求
4)业务持续快速迭代交付的能力
2.互联网架构演进之路
单体架构------> 水平拆分跟面向服务架构------ >分布式架构 ------> 微服务架构 ------> 服务网格架构
1)单体架构设计与实践

典型的MVC结构,API层,业务层,DAO层等整合在一个war包里,进行部署
优点:开发简单;测试简单;部署简单;规模结构简单;当业务支撑力不足时,可简单水平(横向)扩展

缺点:系统耦合度高;技术选型单一;开发效率越来越低下
随着业务发展,数据量增大,该如何打破僵局:
数据库层面:有垂直拆分(分库)和水平拆分(分表
系统层面:垂直拆分(业务维度)和水平拆分(功能维度)
2)水平分层架构设计与实践
水平分层架构是将软件系统按水平方向物理切分为多个独立进程(部署在不同的容器内),最基本的分层方式是表现层、业务逻辑领域层和数据持久层(MVC)

优点:单一职责、高内聚、低耦合、提高可复用性和降低维护成本。
缺点:开发成本高、不同的层次之间调用的网络消耗
3)面向服务设计与实践
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。

优点:低耦合,跨语言,跨系统,跨语言
缺点:业务垂直拆分,每个服务还是单体,对ESB严重依赖
4)微服务架构设计与实践
微服务架构风格是一种将单个应用程序开发为一组小型服务的方法,每个小服务运行在自己的进程中,并且以轻量级机制(通常是HTTP REST API)通信。这些服务是围绕业务能力建立的,并且可以由完全自动化的部署机构独立部署。这些服务的集中管理只有最低限度,可以用不同的编程语言编写并使用不同的数据存储技术。

优点:独立缩放,独立发布与部署,独立开发,优雅降级,分散治理,持续集成和交付
缺点:微服务中业务关注服务局“通信”,业务迭代需要多方业务支持,导致业务迭代速度慢;基础设施组件升级困难,影响交付能力和交付速度;多语言通信之间的问题,业务服务每种语言一套基础设施、成本大
5)服务网格设计与实践
服务网格是一个基础设施层
,用于处理服务间通信。云原生应用有着复杂的服务拓扑,服务网格负责在这些拓扑中实现请求的可靠传递
。在实际应用当中,服务网格通常是由一系列轻量级的网络代理
组成的,它们与应用程序部署在一起,但对应用程序来说是透明的。

请求的大致过程:
1)请求:应用程序A将req发送到SidecarA,SidecarA将req发送到SidecarB,SidecarB将req发送到应用程序B
2)响应:应用程序B将resp发送到SidecarB,SidecarB将resp发送到SidecarA,SidecarA将resp发送到应用程序A
优点:Service Mesh独立进程、独立升级;业务团队专注于业务逻辑本身;一套基础设施支持多语言开发;业务团队和基础设施团队物理解耦
网友评论