微服务架构(一)——简述

软件架构

1、简述

概念

软件架构是对软件系统整体结构与组件的概括描述,用于指导大型软件系统各个模块的设计。是在软件开发过程中,经过各种因素的考虑、权衡之后选择特定的技术,将系统划分成不同功能模块,并使这些模块之间相互分工,彼此协作,更好的为用户提供价值

相关因素

  • 软件系统的业务需求,技术栈,成本,组织架构,可扩展性,可维护性、高可用性等等。

架构进化之路(javaweb)

一层架构 ——》MVC(ssh,ssm)——》 cloud&dubbo(代表性微服务框架)

2、单体架构

简述

  • 功能,业务集中在同一个项目工程,同一个发布包,部署运行在同一台机器,同一个进程中。
  • 优势:易于开发,易于测试,易于部署,易于水平伸缩
  • 劣势:代码膨胀,难以维护,构建成本大,持续交付周期长,新人上手周期长,创新困难,可扩展性差

架构图

在这里插入图片描述

3、微服务

概念

微服务诞生背景:互联网的快速发展,“三高”愈发凸显,开发模式的发展,容器技术的成熟等等

  • 将项目中一些功能较复杂,具有一定独立性的模块形成一套小服务来开发成为单个应用的方式,每个应用运行在独立的进程里, 一般采用轻量级的通讯机制互联,并且他们可以通过自动化方式部署。
  • 拆分模块成为合适的服务单元(不是固定量化的去划分,是一种设计思路)
  • 特征:职责单一,服务之间采用轻量级通讯,具有隔离性,数据独立性,技术多样性
  • 优势:独立性,敏捷性,技术栈灵活,高效团队。
  • 劣势:额外的工作,数据一致性,沟通成本。

架构图

在这里插入图片描述

微服务通讯

通讯模式

类型 一对一 一对多
同步 http请求模式(常见) ——
异步 通知/请求异步响应 发布订阅/发布异步响应

通讯协议

  • REST API
  • RPC(IO/线程调用模型,序列化方式,多语言支持,服务治理(dubbo,dubbox,thrift,motan,grpc)),MQ

微服务发现

传统服务发现
在这里插入图片描述
客户端服务发现
在这里插入图片描述
服务端服务发现
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42133100/article/details/102903525