《JAVA生态圈技术总结》之 微服务架构蓝图总览(上)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 《JAVA生态圈技术总结》之 微服务架构蓝图总览(上)

正文


一、微服务定义


1.1 定义一


微服务是一种架构风格,将单体应用划分成一组小的服务,尽量符合单一职责的原则,使得服务之间相互协作,实现业务功能;

每个服务都运行在独立的进程、虚拟机、容器、服务器中,服务之间采用轻量级的通信机制(HTTP/JSON)进行协作;

每个服务围绕各自的业务能力进行构建,并且能够通过自动化机制独立地部署,相互之间无部署依赖;

每个服务可以使用不同的技术栈进行开发;


1.2 定义二


微服务是一种基于有界上下文的,松散耦合的面向服务的架构。


二、微服务利弊


2.1 优点


  • 划分了业务模块,具有更强的业务边界;
  • 每个微服务都是可以独立部署的,互不影响;
  • 允许技术多样性;


2.2 缺点


  • 带来了分布式系统的复杂性;
  • 带来了最终一致性的难题;
  • 带来了运维的复杂性;
  • 带来了测试复杂性;


三、微服务的适用性


什么场景下适用微服务?什么阶段时适用微服务?


3.1 康威法则


设计的微服务系统的组织,其产生的架构设计应等价于组织间的沟通结构。


这句话的意思是说,原始组织之间的结构最好能映射到设计的微服务系统架构上。比如一个系统包含订单、商品、用户等功能,现实中分别由A、B、C三个小组进行开发维护,那么如果要拆分为微服务的架构,最好就能拆分为订单服务、商品服务、用户服务三个微服务,对应A、B、C三个现实的小组结构。


3.2 生产力


微服务并不是适合任何阶段,最好的方式就是随着项目的扩大或者团队的扩大时,逐步演进到微服务。因为单体应用会随着规模的扩大而逐渐增加内耗,导致生产力降低。微服务的目标是在规模扩大时,使得生产力能维持在一个稳定的水准之上。


微服务与单体的生产力比较:


5.webp.jpg


微服务生产力超过单体的拐点,一般来说是指当团队人数规模达到百人时。当然,这也不是绝对的,需要团队负责人自己视情况进行评估。


3.3 架构演进


如果在项目一开始就设计微服务的架构,一路上会遇到极大的困难与风险。比如业务模块边界的划分、无法预估的业务或者技术复杂性,这些都会耗费更多的人力和时间,甚至最终导致项目失败。


建议的方式就是由单体演进,我们可以在单体阶段不断摸索和沉淀业务和技术上的问题,随着越来越清晰的认知,再加上日渐增加的复杂度,可以考虑逐步拆分部分服务出来,朝着微服务架构的方向演进。


架构演进:

4.webp.jpg


四、服务分层


微服务架构中服务与服务各有不同,相互之间也应该按照层级的方式进行编排。有的与业务无关的服务天然属于底层基础服务,有的与业务有关联的服务则属于聚合了基础服务的聚合服务。


服务分层:

3.webp.jpg


在常见的公司微服务总体架构中,一般的架构表现就如下所示:


微服务总体架构:

2.webp.jpg


有了各个层级的服务之后,中台的概念和战略就显得很自然。


中台战略:

1.webp.jpg


五、服务注册发现


服务注册与发现是微服务架构得以运转的核心功能,它不提供任何业务功能,仅仅用来进行服务的发现和注册,并对服务的健康状态进行监控和管理。其核心的工作原理:


  • 注册中心负责维护所有服务的地址信息,包括服务名称、IP地址、端口等;
  • 提供服务方将自己的信息注册到注册中心上,并维持一个心跳以此来表明自己一直可用;
  • 调用服务方想要调用某个服务时,询问注册中心该服务的地址,然后以负载均衡的方式发起调用;

现在注册中心比较多,主流的有Eureka、Consul、Zookeeper、Nacos等。


相关文章
|
1月前
|
消息中间件 架构师 NoSQL
咕炮课堂Java架构师课程
针对1-5年经验开发者,【Java架构师培训】聚焦互联网热门技术,如Redis、MongoDB、Dubbo、Zookeeper、Kafka,讲授高并发、高可用分布式解决方案。由资深讲师指导,提升技术水平。
30 2
咕炮课堂Java架构师课程
|
1月前
|
设计模式 前端开发 测试技术
Flutter 项目架构技术指南
探讨Flutter项目代码组织架构的关键方面和建议。了解设计原则SOLID、Clean Architecture,以及架构模式MVC、MVP、MVVM,如何有机结合使用,打造优秀的应用架构。
Flutter 项目架构技术指南
|
1月前
|
算法 数据挖掘 调度
隐语实训营-第3讲:详解隐私计算框架的架构和技术要点
主要介绍隐语的隐私计算架构,并对每个模块进行拆解、分析,以期望不同使用者找到适合自己的模块,快速入手。
47 4
|
1月前
|
Kubernetes 开发者 Docker
基于容器技术的微服务架构
基于容器技术的微服务架构
33 0
|
1月前
|
Java 开发者 微服务
Java企业应用软件系统架构演变史
Java企业应用软件系统架构演变史
28 0
|
1月前
|
分布式计算 算法 调度
课3-详解隐私计算框架的架构和技术要点
隐语架构涵盖产品、算法、计算、资源和硬件五层,旨在实现互联互通和跨域管控。产品层包括SecretPad等,简化用户和集成商体验。算法层涉及PSI/PIR、SCQL和联邦学习,提供隐私保护的数据分析和学习。计算层如RayFed、SPU、HEU等,支持分布式计算和密态处理。资源层的KUSCIA用于跨机构任务编排,硬件层涉及FPGA等加速器。互联互通支持黑盒和白盒模式,确保不同平台协作。跨域管控则强调数据流转控制,保护数据权益。
|
26天前
|
设计模式 安全 Java
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
31 0
|
1月前
|
机器学习/深度学习 算法 安全
隐私计算训练营第三讲-详解隐私计算的架构和技术要点
SecretFlow 是一个隐私保护的统一框架,用于数据分析和机器学习,支持MPC、HE、TEE等隐私计算技术。它提供设备抽象、计算图表示和基于图的ML/DL能力,适应数据水平、垂直和混合分割场景。产品层包括SecretPad(快速体验核心能力)和SecretNote(开发工具)。算法层涉及PSI、PIR、数据分析和联邦学习(水平、垂直、混合)。此外,SecretFlow还有YACL密码库和Kusica任务调度框架,Kusica提供轻量化部署、跨域通信和统一API接口。
45 0
|
26天前
|
NoSQL Java Redis
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件(二)
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件
15 0