[微服务教程]1. 微服务架构概念&面试题
2021-03-31 17:09
1191 查看
微服务系列教程:教程文集
单体架构到微服务
- 单体架构 项目初期的一般方案是采取单体架构,把所有功能模块打包到一个jar/war包内,并发布于web容器内运行
- 集群架构 随着用户量以及流量增加,服务器性能受到瓶颈,此时一般通过集群方式,添加新服务器来分散流量。此举可大幅度提升业务系统的并行处理能力
- 业务垂直化拆分 集群下如果还是所有业务都放在一个包内运行,对于代码维护扩展是非常困难的,此时需要考虑对业务进行拆分,降低业务耦合度,提升稳定性。如拆分出用户、搜索、订单、支付等业务模块分别管理
- 服务化(SOA) 将通用的会被多个上层服务使用的模块独立抽离出来,形成独立的、可重用的共享服务,如用户查询、单点登录等
- SOA面向服务架构,是一种软件组件和开发的方式,主要解决信息孤岛、互联互通、业务重用的问题
SpringCloud Alibaba 体系
- Dubbo, 用于实现高性能 Java RPC 通信
- Nacos, 服务注册发现、配置管理、服务管理
- Sentinel, 流量控制、熔断降级、系统负载保护
- RocketMQ, 分布式消息系统,提供低延时的、高可靠的消息发布与订阅服务
- Seata, 高性能微服务分布式事务解决方案
面试题
soa和微服务的区别
- 微服务去除了SOA架构里面的服务总线
- 微服务关注服务解耦,降低业务之间的耦合度
- 微服务更关注持续交付,关注容器化
你是怎么理解微服务的
微服务架构是一种架构思想,实际以分布式系统方式开发,架构是为了结偶。 该架构应该解决分布式系统开发中主要遇到的四个问题
- 客户端如何访问众多服务
- 服务之间要如何通信
- 服务之间如何发现
- 服务挂了如何处理
如何处理微服务落地过程中的问题
应用划分为众多服务以后,客户端需要如何访问 答案是通过统一的API网关入口解决,其作用如下
提供统一服务入口,让微服务对前台透明- 聚合后台的服务,节省流量,提升性能
- 提供安全,过滤,流控等API管理功能
服务之间如何通信 抓住对内RPC,对外REST
-
同步方式
HTTP REST(JAX-RS,Spring Boot)
需要序列化两次
-
Kafka
服务之间如何发现 服务注册与发现服务
-
基于客户端的服务注册与发现
服务挂了如何处理
-
重试机制 - 针对网络不可靠的问题
什么是SpringCloud
- 它制定了微服务、分布式系统框架的规范
- 它集成了微服务落地需要的一系列框架,如配置管理、服务发现、熔断器、网关等
- SpringCloud解决了什么问题 SpringCloud指定了微服务的规范,解决了微服务落地过程中需要处理的以下问题 客户端如何访问众多服务
- 服务之间要如何通信
- 服务之间如何发现
- 服务挂了如何处理
微服务架构的优点和缺点有哪些
优点:
- 可用于解决复杂业务问题
- 独立部署,可持续集成
- 方便扩展,提高可用性
- 业务拆分,方便复用,方便多团队开发 缺点:
- 运维复杂
- 数据一致性难以保证(事务难以保证)
- 服务拆分后,不同业务模块之间的通信增加了时延
CAP定理是什么
一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。
- 一致性 更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致。 这里是强一致性,要不一起成功,要不一起失败
- 可用性 服务一直可用,而且是正常响应时间。
- 分区容错性 分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。 比如深圳机房和上海机房,上海机房无法使用的话深圳机房还可以用(这也叫异地多活)
BASE理论是什么
BASE 理论是对 CAP 理论的延伸,支持大型分布式系统。核心思想是即使无法做到强一致性(CAP 的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性。
- 基本可用(Basically Available) 基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。 电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务(如取消注册服务、聊天服务)。这就是损失部分可用性的体现。
- 软状态(Soft State) 软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。MySQL Replication 的异步复制也是一种体现。
- 最终一致性(Eventual Consistency) 最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。 弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。
后记
- 欢迎加入Java交流群(qq群号: 776241689 )
- 更多技术教程文章,我将在下面的公众号中分享,欢迎关注! PS:小到Java后端技术、计算机基础知识,大到微服务、Service Mesh、大数据等,都是本人研究的方向。我将定期在公众号中分享技术干货,希望以我一己之力,抛砖引玉,帮助朋友们提升技术能力,共同进步!
原创不易,转载请在开头著名文章来源和作者。如果我的文章对您有帮助,请点赞/收藏/关注鼓励支持一下吧❤❤❤❤❤❤
相关文章推荐
- 微服务架构设计(一):核心概念&从既有的架构迁移到微服务的策略
- Spring Cloud架构教程 (七)消息驱动的微服务(核心概念)【Dalston版】
- Spring Cloud架构教程 (七)消息驱动的微服务(核心概念)【Dalston版】
- Spring Cloud架构教程 (七)消息驱动的微服务(核心概念)【Dalston版】
- 2019最新从无到有搭建中小型互联网公司后台服务架构与运维架构教程 包含课件源码
- 从经典架构项目中透析微服务架构的核心概念和充血模型
- 【备忘】使用dubbo、spring-boot等技术实现互联网后台服务项目架构视频教程
- 微服务架构、springboot等相关概念
- 视频教程-新版SpringBoot微服务项目架构实战-Java
- Spring Cloud架构教程 (十六)服务容错保护(Hystrix断路器)【Dalston版】
- SOA面向服务架构——SOA的概念
- 微服务架构 SpringCloud(一)组件和概念介绍
- Spring Cloud架构教程 (四)服务网关(路由配置)
- Spring Cloud架构教程 (三)服务网关(基础)
- MyEclipse Web开发教程:XML & XML架构(二)
- 微服务架构设计实践系列之六:概念架构阶段
- 从经典架构项目中透析微服务架构的核心概念和充血模型
- 译著出版:《SOA概念、技术与设计》 - 面向服务的架构
- SOA面向服务架构——SOA的概念
- SOA 服务架构之简介及理解以及面试题