什么是架构
- 整体结构和组件的抽象描述
- 指导【软件系统】各个方面的设计
- 事关软件开发的方法选择
单机
- 所有功能在同一个进程、同一个及其
- 问题 The C10K problem、停服
单体、应用垂直
SOA、应用进一步拆分为服务丨水平切分
-
服务
-
通信标准
-
去中心化的演进方向
-
遇到的一些问题
SOA (Service-Oriented Architecture) 是一种架构风格,相比于单体应用架构,具有以下优势:
1. 模块化和可重用性:SOA 将应用程序拆分为一组松散耦合的服务,每个服务都负责完成特定的功能。这种模块化的设计使得服务可以独立开发、测试和部署,同时可以被多个应用程序共享和重用,提高了开发效率和代码的可维护性。
2. 松耦合和可扩展性:SOA 架构通过松散耦合的服务之间的通信,使得系统的各个部分可以独立进行扩展和演化。当需要增加新的功能或改变现有功能时,只需对相应的服务进行修改,而无需影响整个应用程序。
3. 跨平台和跨语言支持:SOA 通过使用标准化的接口和通信协议,使得服务可以在不同的平台和使用不同编程语言的应用程序之间进行交互和集成。
随着技术的发展和业务需求的变化,SOA 架构逐渐演进为微服务架构。微服务架构进一步强调了服务的独立性和自治性,并将服务拆分得更加细粒度。每个微服务都有自己的数据存储和业务逻辑,可以独立部署、伸缩和维护。微服务之间通过轻量级的通信机制进行协作,通常采用 RESTful API 或消息队列等方式进行通信。
一个有趣的例子是电子商务网站的订单处理系统。在单体应用架构中,订单处理功能可能是作为整个应用程序的一个模块实现的。而在 SOA 架构中,可以将订单处理拆分为独立的服务,例如用户服务、产品服务、库存服务、支付服务等。每个服务负责处理自己的业务逻辑,通过定义的接口和协议进行通信。这样可以实现更好的扩展性和灵活性,例如可以独立扩展支付服务以处理高并发的支付请求,而不影响其他服务的性能。
随着演进到微服务架构,订单处理系统可以进一步拆分为更小的微服务,例如拆分成订单管理服务、物流服务、用户通知服务等。每个微服务都可以由专门的团队开发和维护,使得系统更加灵活和可扩展。同时,微服务架构还提供了更好的容错性和弹性,当某个服务出现故障时,其他服务仍然可以正常工作,从而提高了整个系统的可用性。
企业后端架构剖析
云计算
云原生
弹性资源
计算资源
存储资源
DevOps
微服务架构
服务网格
服务网格通过提供一个充满功能的、面向网络的软件层,帮助管理应用程序的不同部分之间的通信。它能够为服务之间的负载均衡、身份验证、鉴权、流量控制、可观察性等提供一致性和可管理性。通过服务网格,操作和安全工作都可以得到简化,并允许开发人员更快地构建新功能并进行部署。
例如,许多服务网格框架提供了经典的L7(应用层)负载均衡功能,能够自动将流量路由到可用的实例。此外,服务网格还可以提供服务发现、流量管理和监控等功能,从而为开发团队提供更多受控环境,减少了不同系统之间的相互作用。
服务网格可以使用不同的协议进行实现,例如Istio、Linkerd、Envoy等。这些框架通过注入HTTP代理(称为“sidecar”)来实现服务发现和网络功能,它们可以负责应用程序的网络通信,同时还记录和收集服务运行时的指标,这让开发人员能够更好地了解自己的服务。服务网格将通信逻辑从应用程序代码中分离出来,从而可以简化应用程序本身并提供更好的管理性能。
总之,服务网格使得连接、管理和保护微服务之间的通信变得更加容易,并且减少了微服务的开发和部署时间,从而帮助开发人员专注于他们的应用程序逻辑。