作者:微信小助手
发布时间:2023-11-27T22:22:16
概览 微服务(Microservices)是一种软件架构风格,将一个大型应用程序划分为一组小型、自治且松耦合的服务。每个微服务负责执行特定的业务功能,并通过轻量级通信机制(如HTTP)相互协作。每个微服务可以独立开发、部署和扩展,使得应用程序更加灵活、可伸缩和可维护。 在微服务的架构演进中,一般可能会存在这样的演进方向:单体式-->服务化-->微服务。 单体服务一般是所有项目最开始的样子: 后来,单体服务过大,维护困难,渐渐演变到了分布式的SOA: SOA(Service-Oriented Architecture,面向服务的架构)是一种软件架构设计原则,强调将应用程序拆分为相互独立的服务,通过标准化的接口进行通信。SOA关注于服务的重用性和组合性,但并没有具体规定服务的大小。 微服务是在SOA的基础上进一步发展而来,是一种特定规模下的服务拆分和部署方式。微服务架构强调将应用程序拆分为小型、自治且松耦合的服务,每个服务都专注于特定的业务功能。这种架构使得应用程序更加灵活、可伸缩和可维护。 需要注意的是,微服务是一种特定的架构风格,而SOA是一种设计原则。微服务可以看作是对SOA思想的一种具体实践方式,但并不等同于SOA。 微服务与单体服务的区别在于规模和部署方式。微服务将应用程序拆分为更小的、自治的服务单元,每个服务都有自己的数据库和代码库,可以独立开发、测试、部署和扩展,带来了更大的灵活性、可维护性、可扩展性和容错性。 微服务架构不是万金油,尽它有很多优点,但是对于是否采用微服务架构,是否将原来的单体服务进行拆分,还是要考虑到服务拆分后可能带来的一些挑战和问题: 简单说,采用微服务需要权衡这些问题和挑战,根据实际的需求来选择对应的技术方案,很多时候单体能搞定的也可以用单体,不能为了微服务而微服务。 目前最主流的微服务开源解决方案有三种: Dubbo: Spring Cloud Netflix: Spring Cloud Alibaba: 三种方案的区别: 在面试中,微服务一般主要讨论的是Spring Cloud Netflix,其次是Spring Cloud Alibaba,Dubbo更多的是作为一个RPC框架来问。 微服务给系统开发带来了一些问题和挑战,如服务调用的复杂性、分布式事务的处理、服务的动态管理等。为了更好地解决这些问题和挑战,各种微服务治理的组件应运而生,充当微服务架构的基石和支撑。 微服务的各个组件和常见实现: 注册中心是用来管理和维护分布式系统中各个服务的地址和元数据的组件。它主要用于实现 总结一下注册中心的作用: SpringCloud可以与多种注册中心进行集成,常见的注册中心包括: 可以看到Eureka和ZooKeeper的最大区别是一个支持 Eureka的实现原理,大概可以从这几个方面来看:1.什么是微服务?
2.微服务带来了哪些挑战?
3.现在有哪些流行的微服务解决方案?
这三种方案有什么区别吗?
特点
Dubbo
Spring Cloud Netflix
Spring Cloud Alibaba
开发语言
Java
Java
Java
服务治理
提供完整的服务治理功能
提供部分服务治理功能
提供完整的服务治理功能
服务注册与发现
ZooKeeper/Nacos
Eureka/Consul
Nacos
负载均衡
自带负载均衡策略
Ribbon
Ribbon\Dubbo负载均衡策略
服务调用
RPC方式
RestTemplate/Feign
Feign/RestTemplate/Dubbo
熔断器
Sentinel
Hystrix
Sentinel/Resilience4j
配置中心
Apollo
Spring Cloud Config
Nacos Config
API网关
Higress/APISIX
Zuul/Gateway
Spring Cloud Gateway
分布式事务
Seata
不支持分布式事务
Seata
限流和降级
Sentinel
Hystrix
Sentinel
分布式追踪和监控
Skywalking
Spring Cloud Sleuth + Zipkin
SkyWalking或Sentinel Dashboard
微服务网格
Dubbo Mesh
不支持微服务网格
Service Mesh(Nacos+Dubbo Mesh)
社区活跃度
相对较高
目前较低
相对较高
孵化和成熟度
孵化较早,成熟度较高
成熟度较高
孵化较新,但迅速发展
4.说下微服务有哪些组件?
注册中心
5.注册中心是用来干什么的?
服务发现
和服务注册
功能。
6.SpringCloud可以选择哪些注册中心?
7.说下Eureka、ZooKeeper、Nacos的区别?
特性
Eureka
ZooKeeper
Nacos
开发公司
Netflix
Apache 基金会
阿里巴巴
CAP
AP(可用性和分区容忍性)
CP(一致性和分区容忍性)
既支持AP,也支持CP
功能
服务注册与发现
分布式协调、配置管理、分布式锁
服务注册与发现、配置管理、服务管理
定位
适用于构建基于 HTTP 的微服务架构
通用的分布式协调服务框架
适用于微服务和云原生应用
访问协议
HTTP
TCP
HTTP/DNS
自我保护
支持
-
支持
数据存储
内嵌数据库、多个实例形成集群
ACID 特性的分布式文件系统 ZAB 协议
内嵌数据库、MySQL 等
健康检查
Client Beat
Keep Alive
TCP/HTTP/MYSQL/Client Beat
特点
简单易用、自我保护机制
高性能、强一致性
动态配置管理、流量管理、灰度发布等
AP
,一个支持CP
,Nacos既支持既支持AP
,也支持CP
。8.Eureka实现原理了解吗?