服务架构演变
传统单体架构 ==> 分布式架构 ==> 面向服务(SOA)架构 ==> 微服务架构
传统单体架构:如分层架构模式。
- 应用场景:并发量比较少的,如政府项目、管理系统、ERP、OA、人事管事系统等。
分布式架构:基于传统单体架构演变过来的,会根据不同的业务实现拆分n多个不同子系统。
- 如京东官网。每个子系统中都有自己的团队来实现开发,具有独立数据库、独立缓存、独立mq,最终实际根据多个不同域名实现跳转整合成一个大项目。
面向服务(SOA)架构:将整个项目中共同的业务逻辑抽取成一个公共的服务,提供给其他的服务实现调用,调用的过程会涉及到RPC远程调用技术。
- SOA架构模式实现方案为Web Service或者是ESB企业服务总线。
- 底层通讯协议SOAP协议(Http+XML)实现传输。
- 传统政府、银行项目还是保留地在使用Web Service。
微服务架构:比SOA架构对服务拆分的粒度更加精细,让业务界限更加清晰,每个服务独立部署、互不影响。
- 服务与服务之间的通讯协议采用restful形式。
- 数据交换格式采用http+json格式实现传输。
关于面向对象、面向组件、面向服务
三者身处于软件开发的不同层面,不论是哪个领域的软件开发,都可能要同时面对OOP、SOA和CBD
- 这些都是解决问题的思维模式和执行方法,都强调“面向”是因为它们解决问题的出发角度不同
- 面向对象编程(Object-Oreinted Programming) :是一种编程范式,指在设计程序时大量运用类实例对象的方式。
- OOP主要思想是把构成问题的各个事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙一个事物在整个解决问题的步骤中的行为。
- 类是具有相同特性(数据元素)和行为(功能)的对象的抽象。
- 面向服务架构(Service-Oreinted Architecture) :是将软件设计成一组可互操作的服务的一套原则或方法论。
- 通常在考虑系统架构时才会触及SOA。
- 基于组件开发(Component-Based Development) :是一种软件工程实践,设计时通常要求组件之间高内聚,松耦合。
- 其接口可能是OO的,调用方式可能是以Service的方式。
- 基于组件开发关注系统层次、子系统边界和子系统间通讯的的设计。