微服务以及注册中心

一、什么是微服务

微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。微服务也指一种松耦合的、有一定的有界上下文的面向服务架构。也就是说,如果每个服务都要同时修改,那么它们就不是微服务,因为它们紧耦合在一起:如果你需要掌握一个服务太多的上下文场景使用条件,那么它就是一个有上下文边界的服务,这个定义来自DDD领域驱动设计。

二、为什么要做服务拆分

1.模块解耦

2.提高开发效率(在搭建项目阶段,微服务的效率很低,搭建完以后开发的效率变高)

3.降低代码维护难度

4.提高系统稳定性

5.提高系统扩展性

三、集群

集群,同一个程序同时部署在多台电脑上

单机,同一个程序只部署在一台电脑上

分布式:多组集群共同组成的一套系统

服务器机房

异地多活:把集群里的多台机器,分散到多个不同的机房里,防止某个机房突然故障

集群部署的时候,哪一台机器对用户提供服务?

负载均衡,让集群里的每台机器的工作量大致相同

负载均衡策略:

1.随机法

2.轮询法

3.哈希法,根据ip取hash值,然后对集群机器数量求余数,根据余数定位目标机器

四、微服务的优缺点

微服务的优点:

1.每个微服务都很小,这样能聚焦一个指定的业务功能或业务需求。

2.微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。

3.微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。

4.微服务能使用不同的语言开发。

5.微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如Jenkins,bamboo 。一个团队的新成员能够更快投入生产。

6.微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果。无需通过合作才能体现价值。

7.微服务允许你利用融合最新技术。

8.微服务只是业务逻辑的代码,不会和HTML,CSS 或其他界面组件混合。

9.微服务能够即时被要求扩展。

10.微服务能部署中低端配置的服务器上。

11.易于和第三方集成。

12.每个微服务都有自己的存储能力,可以有自己的数据库。也可以有统一数据库。

微服务的缺点:

1.微服务架构可能带来过多的操作。

2.需要DevOps技巧(http://en.wikipedia.org/wiki/DevOps).

3.可能双倍的努力。

4.分布式系统可能复杂难以管理。

5.因为分布部署跟踪问题难。

6.当服务数量增加,管理复杂性增加。

五、rpc

RPC(Remote Procedure Call) 远程过程调用, 简单的理解就是像调用本地方法一样,调用

其他服务器中提供的方法。

调用过程:

1、客户端client发起服务调用请求。

2、client stub 可以理解成一个代理,会将调用方法、参数按照一定格式进行封装,通过服务提供

的地址,发起网络请求。

3、消息通过网络传输到服务端。

4、server stub接受来自socket的消息

5、server stub将消息进行解包、告诉服务端调用的哪个服务,参数是什么

6、结果返回给server stub。

7、sever stub把结果进行打包交给socket

8、socket通过网络传输消息

9、client slub 从socket拿到消息。

10、client stub解包消息将结果返回给client。

一个RPC框架就是把步骤2到9都封装起来。

常用的rpc框架:

1.dubbo,阿里巴巴开源的rpc框架,已停止维护

2.dubbox, 当当网基于dubbo做的二次开发

3.thrift,facebook开源的rpc服务框架,主要使用的公司:美团

4.motan,新浪微博开发的rpc框架

5.spring cloud feigin,由spring开发的rpc框架

六、注册中心

一个微服务项目的基础:

1.业务服务集群若干

2.注册中心集群

3.客户端负载均衡策略

4.RPC

4.接口数据格式定义

注册中心简介:

1.各微服务在启动的时,将自己的网络地址等信息注册到服务发现组件中,服务发展组件会存储这些信息

2.服务消费者可从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务提供者的接口

3.各个微服务与服务发现组件使用一定的机制(例如心跳)通信。服务发现组件如长时间无法与某微服务实例通信,就会注销该实例。

4.微服务网络地址发生变更(例如实例增减或者IP端口发生变化等)时,会重新注册到服务发现组件。使用这种方式,服务消费者就无须人工修改提供者的网络地址了。

注册中心应该具备的功能:

1.服务注册表:是服务发现组件的核心,它用来记录各个微服务的信息,例如微服务的名称、IP、端口等。服务注册表提供查询API和管理API,查询API用于查询可用的微服务实例,管理API用于服务的注册和注销。

2.服务住蹙额和服务发现:服务注册是指微服务在启动的时,将自己的信息注册到服务发现组件上的过程。服务发现是指查询可用微服务列表及其网络地址的机制。

3.服务检查:服务发现组件使用一定机制定时检测已注册的服务,如发现某实例长时间无法访问,就会在服务注册表中移除该实例。

相关推荐
技术无疆1 小时前
快速开发与维护:探索 AndroidAnnotations
android·java·android studio·android-studio·androidx·代码注入
m0_741768852 小时前
使用docker的小例子
运维·docker·容器
学习3人组3 小时前
CentOS 中配置 OpenJDK以及多版本管理
linux·运维·centos
厨 神3 小时前
vmware中的ubuntu系统扩容分区
linux·运维·ubuntu
Karoku0663 小时前
【网站架构部署与优化】web服务与http协议
linux·运维·服务器·数据库·http·架构
geek_Chen013 小时前
虚拟机共享文件夹开启后mnt/hgfs/下无sharefiles? --已解决
linux·运维·服务器
架构文摘JGWZ4 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
(⊙o⊙)~哦4 小时前
linux 解压缩
linux·运维·服务器
拾光师5 小时前
spring获取当前request
java·后端·spring
aPurpleBerry5 小时前
neo4j安装启动教程+对应的jdk配置
java·neo4j