在软件项目开发过程中都有哪些常见的软件架构

软件产品的架构,通常都是随着业务的发展而不断演变的;
我从事软件开发行业也有十余年了,遇到过的软件(企业级应用,
SOA架构因为单体应用架构的种种缺点,已经不能再满足业务需求的时候,于是就出现了SOA架构。
SOA架构的主要思想是把应用程序的模块化组件,通过接口联系起来(接口可以独立于语言、框架、硬件、操作系统);
在SOA架构中,有两个主流实现方式:Web Service:使用WSDL定义接口,SOAP协议通信,传输XML数据;
缺点是SOAP、XML较重;
服务管理不完善;
ESB:企业服务总线,每个服务提供者通过总线模式插入系统,总线完成服务的编排和转发;
但ESB本身就比较中,而且它本身算是一个单点,在软件架构中,单点意味着风险;
微服务架构微服务的产生,也是由于SOA架构的一些缺点,这里再次印证了这句话,【应用架构的演进的过程通常是被业务逼出来的】。
在微服务的架构中,服务拆分粒度更细,提高了复用性;
各个微服务可以独立开发,独立部署;
微服务之间通常使用Restful风格的API通信,传输格式也通常选择JSON;
微服务是SOA架构的延续,它们和单体应用相比,大大提高了系统的负载能力,解决了应用高并发的需求;
服务和服务之间的耦合度也被降低,并且项目团队可以被拆分成多个小团队,每个微服务都可以进行敏捷开发部署;
每个团队的技术栈也可以不相同,只要遵守接口协议即可。
当然SOA、微服务的出现,在解决一些问题的时候,也带来了另外一部分的问题,比如增加了网络开销、服务依赖性、增加了测试运维难度、数据一致性问题等等。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的

标签