云原生分布式微服务的基础概念
Posted adventure.Li
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云原生分布式微服务的基础概念相关的知识,希望对你有一定的参考价值。
一、背景
基本说明
随着时代的发展,用户的需求变化以及软硬件的提升,云原生的时代已来临。大厂面试也除了对计算机基础的考察外,也开始进行架构、设计方面的考察,微服务和分布式理论等也开始成为迈入大厂的必备技能。以下是个人的一些理解。
基础体系
二、详细说明
先从一道经常被讨论的面试题说起:
请你谈谈对微服务的理解以及微服务和分布式的区别是什么?
相信大多数Java程序员被问到该问题可能是能谈出一二,但也可能理解不多,包括鄙人。以下也仅代表个人的一些看法:
微服务
:将模块拆分成一个独立的服务单元通过接口来实现数据的交互,强调的是业务的拆分,模块的微小,便于独立部署或开发。对应的一些解决方案或框架,有SpringCloud,可再谈谈具体的一些组件,从组件层面去看待微服务。
分布式
:是指将不同的业务分布在不同的地方,更加强调的实现层面,物理上的分布式分布。可列举一些常见的分布式系统,例如Hadoop、Zk、Nacos等。
集群
:同一个业务,部署在多个服务器上。
关于具体的对比不展开说,我们先思考一下为什么需要进行分布式或者进行服务的拆分?
理解技术的背后
分布式的背景理解
技术的出现,必然有背后的业务和需求推动。而分布式、微服务则是为了解决复杂问题
的一种分治手段。复杂的来源有以下:
- 用户的对象变化:有起初的科学家数学家到个人PC流行再到现如今的人手的手机,每天产生的信息也是指数级增长。
- 用户的数量激增:正因为对象发生变化,带来的也是用户数的增长。
- 软件解决的业务问题变化:架构来源于软件,软件服务于社会、人类。所以说理解架构的演变、云原生、微服务,也离不开人类的需求,也正因为人的需求多变、对于响应速度、容错的要求越来越高,所以说也导致分布式及其保证数据一致性、熔断等概念的提出。
总之,正因为以上的系列推动,出现了分布式
的概念,来解决单机无法解决的问题。分布式的思路也很简单,正如人组成团队协作共同完成一项单人难以完成的任务。但与之而来的问题也很多,协作
是一件很棘手的事情。因此分布式的概念让Java程序员从面对 OS层面的进程、线程协作 扩大到 架构层面的 服务、模块、业务的协作,甚至由于追求团队效率 还需要去兼顾 人员团队的协作。
- 对于OS层面的协作,通信都OS内部,不涉及网络,通过管道、共享内存、信号量等机制即可进行通信协作。
- 而对于分布式的机器间的协作,将会更加麻烦,此时主要需要去解决网络的超时、出错、机器的宕机等问题。一般采用的通信是RPC高性能通信机制,当然也可能通过REST轻量级HTTP通信协议通信,SpringCloud一般采用此办法。
分布式的主要技术
为保证分布式的有效、可用等,提出来一些常见的一致性协议去保证服务的可用性。
关键理论
- CAP基础理论
- BASE基本一致性理论
常见协议
- 2PC
- 3PC
- Gossip协议
- Paxos协议
- Raft协议
- ZK的ZAB协议
- Nacos的Distro协议
常见开源分布式系统
- apache的zookeeper以及hadoop体系
- alibaba的nacos
微服务的背景理解
微服务一般也会采用分布式进行部署实现,但也不一定就是分布式,微服务更多在于上层的业务服务,分布式和集群更多在于实现层面,微服务的分布式部署降低机器的负载,通过同一微服务的集群的负载均衡实现服务的高可用,都是基础为上层提供设施的体系。
在分布式部分,理解了实现方面的协作
,而微服务更多在于业务服务方面的协作
。通过微小的服务器,便于独立的进程部署,更好地进行服务间的调用,实现解耦,和提升复用性,极大提升的开发效率和软件的高质量。
微服务的主要技术
- 服务注册与发现
- 分布式配置
- 分布式事务
- 消息驱动
- 服务网关
- 路由、负载均衡
- 链路追踪、服务治理
Java常见微服务生态
- SpringCloud(netfflix)
- SpringCloudAlibaba
DevOps的背景理解
以上从实现、业务方面的协作都有了解决办法,那么现在还有人员的协作还没解决,因此DevOps就主要来解决人员的协作
问题。
DevOps:开发+运维,由于容器技术的兴起,运维变得相对更加容易,将运维的部分职责也交给开发人员来处理,提升开发成本及提升效率。
其中的一些敏捷开发方法:例如白板则是共同推进达成目标一致性,更快速、有效的传递需求,任务。
主要方法、实践
- Jenkins的持续集成:避免重复的编译、部署,方便部署,测试
- 白板:对开发人员协调达成共同目标,有点锁的味道
推荐文章
以上是关于云原生分布式微服务的基础概念的主要内容,如果未能解决你的问题,请参考以下文章
spring cloud互联网分布式微服务云平台规划分析--spring cloud服务监控中心
spring cloud互联网分布式微服务云平台规划分析--spring cloud服务监控中心