微服务以及注册中心

news2024/9/21 0:37:36

一、什么是微服务

微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。微服务也指一种松耦合的、有一定的有界上下文的面向服务架构。也就是说,如果每个服务都要同时修改,那么它们就不是微服务,因为它们紧耦合在一起:如果你需要掌握一个服务太多的上下文场景使用条件,那么它就是一个有上下文边界的服务,这个定义来自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.服务检查:服务发现组件使用一定机制定时检测已注册的服务,如发现某实例长时间无法访问,就会在服务注册表中移除该实例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2147051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Errorresponsefromdaemon:toomanyrequests:Youhavereachedyourpullratelimit.

Errorresponsefromdaemon:toomanyrequests:Youhavereachedyourpullratelimit.Youmayincreasethelimitbyauthenticatingandupgrading:https://www.docker.com/increase−rate−limit.See ′ dockerrun−−help 在拉取docker进行的时候遇到这个问题,如何解决呢?本文提供的解决方…

石英晶体谐振器:核心功能材料及其工作原理与应用

晶发电子专注17年晶振生产,晶振产品包括石英晶体谐振器、振荡器、贴片晶振、32.768Khz时钟晶振、有源晶振、无源晶振等,产品性能稳定,品质过硬,价格好,交期快.国产晶振品牌您值得信赖的晶振供应商。 石英晶体谐振器,又称为无源晶振,是现代电子…

【代码】使用c#实现串口通信的基础模板

一、分享代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;using System.IO.Ports; using…

云平台在大规模设备管理和数据分析中的作用

在当代数字化转型的浪潮中,云平台作为信息技术基础设施的核心组件,扮演着无可替代的角色,尤其在大规模设备管理和数据分析领域,其重要性和影响力日益凸显。本文旨在深入探讨云平台如何通过其独特的优势,促进数据的高效…

ROS第五梯:ROS+VSCode+C++单步调试

解决问题:在ROS项目中进行断点调试。 第一步:创建一个ROS项目或者打开一个现有的ROS项目。 第二步:修改c_cpp_properties.json 增加一段命令: "compileCommands": "${workspaceFolder}/build/compile_commands.json"第三…

11.第二阶段x86游戏实战2-找人物状态

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

gma 2.0.13 (2024.09.16) 更新日志

安装 gma 2.0.13 pip install gma2.0.13网盘下载: 链接:https://pan.baidu.com/s/1P0nmZUPMJaPEmYgixoL2QQ?pwd1pc8 提取码:1pc8 注意:此版本没有Linux版! 编译gma的Linux虚拟机没有时间修复,本期Linux版…

WinRAR 创建自解压文件 添加桌面快捷方式 自定义图标

一、需求描述 将我们开发的软件,打包成exe安装包形式,让用户双击后可以选择安装位置,并在安装完成后,自动生成桌面快捷方式(以任意我们自定义的图标和描述) 二、准备 1.根据需求准备如下几种图标 软件安…

解析药用植物重楼甾体皂苷生物合成中的连续糖基化及其抗真菌作用-文献精读49

Unraveling the serial glycosylation in the biosynthesis of steroidal saponins in the medicinal plant Paris polyphylla and their antifungal action 解析药用植物重楼甾体皂苷生物合成中的连续糖基化及其抗真菌作用 摘要 糖–糖糖基转移酶在构建复杂的具有生物活性的…

走进低代码表单开发(五):高效开发的利器

前面我们已经介绍了勤研低代码开发平台的权限管理相关的内容,当表单设计完成后,我们将继续探索表单的其他功能,接下来,我们一起来看看勤研低代码平台还能如何为用户带来更便捷的开发体验。 一、表单导入 表单导入功能是勤研低代码…

电气自动化入门03:安全用电

视频链接:2.1 电工知识:触电原因与防触电措施_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1PJ41117PW/?p4&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.电流对人体的危害 电击:电流通过人体。 电伤:电流热效应…

深入理解Unreal中的AI感知系统

StimuliSource和PerceptionListener 感知作为一种信号,整个场景中存在这个信号的生产者和消费者。这种信号在Unreal中被叫做刺激Stimuli 生产者就是StimuliSource,通过挂载StimuliSourceComponent并RegisterForSense来注册成为哪些类型刺激的刺激源 消费…

聚焦API安全未来,F5打造无缝集成的解决方案

研究发现,目前超过90%的基于Web的网络攻击都以API端点为目标。随着对API使用需求的增加,这些攻击还会持续增长。现代企业需要一种动态防御策略,在风险升级成代价高昂、令人警惕且往往无法预防的API安全漏洞之前,发现并降低风险。 …

Android 开发高频面试题之——Flutter

Android开发高频面试题之——Java基础篇 flutter高频面试题记录 Flutter1. dart中的作用域与了解吗2. dart中. .. ...分别是什么意思?3. Dart 是不是单线程模型?如何运行的?4. Dart既然是单线程模型支持多线程吗?5. Future是什么6. Stream是什么7. Flutter 如何和原生交互…

微信getUserProfile不弹出授权框

当我们在微信小程序开发工具中想要使用getUserProfile来获取个人信息的时候,会发现不弹出授权框,这是什么原因呢? 早在2022年的小程序官方公告中就已经明确给出了小程序用户头像昵称获取规则调整公告 因此如果还想继续使用getUserProfile的弹…

uni-app-通过vue-cli命令行快速上手

环境安装 全局安装 vue-cli npm install -g vue/cli创建uni-app 使用正式版(对应HBuilderX最新正式版) vue create -p dcloudio/uni-preset-vue my-project使用alpha版(对应HBuilderX最新alpha版) vue create -p dcloudio/uni-p…

ARMxy车辆数据采集Linux智能控制器

在当今科技日新月异的时代,高效智能的边缘计算设备在众多领域发挥着关键作用。我们的 ARM 边缘计算机,凭借其卓越的性能和广泛的适用性,成为车队管理智能化的核心力量。 一、强大硬件配置,完美适配车队管理需求 ARM 边缘计算机支…

2024 全新利器:API 微查接口登场

在信息时代的浪潮中,数据查询和核验成为了人们生活中必不可少的一部分。然而,为了满足各种不同的查询需求,开发和维护一个高效、全面的查询系统对于个人或者小团队来说往往是一项不小的挑战。好在现在有了全新的利器:API 微查接口…

CTF 技能树 LOG -GIT泄露 笔记

log 使用虚拟机kali操作 python2 安装 apt-get install python2 进入root用户,下载克隆git hack库 git clone https://github.com/BugScanTeam/GitHack sudo passwd root 修改root 命名密码为root 切换登录 su root 终端进入home/kali/GitHack/ python GitH…

【模板进阶】类型参数的推断

一、使用 B o o s t Boost Boost库来借助推断 通常,我们可以使用 t y p e i d ( ) typeid() typeid()来推断一个类型,但是有时候 t y p e i d typeid typeid不够准确,因此,我们借助 B o o s t Boost Boost库里面的 t y p e _ i d…