您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

分布式系统如何寻址

时间:2020-11-04 09:09:09  来源:  作者:

分布式系统如何寻址?

通过 RPC 框架,能够解决服务之间的跨网络通信问题,是微服务改造的基础。

服务拆分之后,需要维护更多细粒度的服务,这样就涉及到 RPC 客户端服到服务端的 部署地址问题,如何维护? 这个时候就需要服务注册和发现。

什么叫服务发现?

所谓的服务发现,就是让服务调用方知道服务提供方的地址是啥? 比如 Ngnix 作为反向代理器,可以这样当请求到来时,可以通过 Nginx 知道应用服务器的地址是什么。这个就叫:服务发现

Nginx 是怎么做服务发现的?

答案:Nginx 是将应用服务器的地址放在配置文件中。

vi nginx.conf
location  / {
                proxy_pass http://39.107.125.254:8080/springwebdemo/loginaction.do?op=tologin;
                proxy_set_header Host $host:8080;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Via "nginx";
         }
#刷新配置
./nginx -s reload

proxy_pass 配置的就是对应的 url .

配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。

但是这样存在一些问题:

  • 需要扩容的时候,需要修改客户端配置,重启客户端进程,操作起来比较麻烦。
  • 一旦一个服务器出故障,需要修改配置,然后重启,无法自动修复
  • RPC 服务端上线无法提前摘除流量,也就是说,发往服务端的请求流量依然会存在,客户端被重启服务端的请求还没有返回,会造成客户端请求失败。

注册中心是怎么解决这些问题的?

注册中心两点功能:

  • 提供服务地址的存储
  • 当存储内容发生变化时,可以将变更的内容推送给客户端

有了第二个内容,当需要紧急扩容时,当服务器发生故障时,需要快速摘除节点,都不用重启就可以实现。

使用注册中心后,RPC 的通信:

分布式系统如何寻址

 

  • 客户端与注册中心建立连接,告诉注册中心。
  • 服务端向注册中心注册服务后,注册中心会将最新的服务注册信息通知给客户端。
  • 客户端拿到服务端的地址之后,就可以向服务端发起调用请求。

服务端的增加减少对于客户端来说是透明的,这样可以实现不重启客户端,就可以动态地变更服务节点,并且实现优雅关机。

什么是优雅关机

优雅关机的相对面是暴力关机,暴力停止服务,已经发送的请求还没有来得及处理,就被杀掉,这样会造成部分请求失败。因此需要在服务端退出的时候,先停止掉流量,不再受理新的请求,当服务处理完之后再关闭。



Tags:分布式系统   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  Tags: 分布式系统  点击:(23)  评论:(0)  加入收藏
分布式一致性算法概要随着各种高并发访问、海量数据处理等应用场景越来越多,为了应对这些使用场景,分布式系统应运而生。分布式系统得以发展,得益于诸多优点,比如:可以避免 单点...【详细内容】
2021-04-13  Tags: 分布式系统  点击:(238)  评论:(0)  加入收藏
分布式系统的经典理论分布式系统从诞生到现在已经有几十个年头了,其中伴随着一些很重要的基础理论,正是这些影响深远的基础理论,奠定了分布式系统的坚实基础,造就了分布式领域的...【详细内容】
2021-04-13  Tags: 分布式系统  点击:(262)  评论:(0)  加入收藏
分布式理论知识1、分布式系统架构1.1基础概念分布式 : 将一个单体项目分成很多个模块,各个模块协同工作,各个模块构成了分布式系统集群:针对单个模块或者单个系统在多台服务器上...【详细内容】
2021-01-28  Tags: 分布式系统  点击:(110)  评论:(0)  加入收藏
一致性问题一致性问题是分布式领域最重要、最基础的问题。一致性/Consistency,是说在有多个服务节点的情况下,执行一些列操作,在约定协议的保障下,使得他们对外的处理结果,能达...【详细内容】
2020-12-15  Tags: 分布式系统  点击:(149)  评论:(0)  加入收藏
在分布式系统,尤其是微服务系统中,一次外部请求往往需要内部多个模块,多个中间件,多台机器的相互调用才能完成。在这一系列的调用中,可能有些是串行的,而有些是并行的。在这种情况...【详细内容】
2020-12-11  Tags: 分布式系统  点击:(158)  评论:(0)  加入收藏
现如今可谓是微服务、分布式、IoT(物联网)横行的时代,作为一名开发者始终还是要保持一定的危机意识,特别是在日常的项目开发中,若是有机会接触到一些关于微服务、分布式下的应用...【详细内容】
2020-12-01  Tags: 分布式系统  点击:(114)  评论:(0)  加入收藏
分布式系统如何寻址?通过 RPC 框架,能够解决服务之间的跨网络通信问题,是微服务改造的基础。服务拆分之后,需要维护更多细粒度的服务,这样就涉及到 RPC 客户端服到服务端的 部署...【详细内容】
2020-11-04  Tags: 分布式系统  点击:(103)  评论:(0)  加入收藏
上一篇《CAP》写完之后,我又反复回看了多次,发现最后的一部分表达CAP、ACID、BASE、“BACP(自造)”关系时有一些问题,并且不是很严谨,但是无奈已经发送过的内容,无法支持修改,并且有挺多小伙伴都在私聊我确认细节,这里我来重...【详细内容】
2020-09-16  Tags: 分布式系统  点击:(46)  评论:(0)  加入收藏
介绍OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方应用或分享他们数据的所有内容。OAuth...【详细内容】
2020-08-18  Tags: 分布式系统  点击:(65)  评论:(0)  加入收藏
▌简易百科推荐
近日只是为了想尽办法为 Flask 实现 Swagger UI 文档功能,基本上要让 Flask 配合 Flasgger, 所以写了篇 Flask 应用集成 Swagger UI 。然而不断的 Google 过程中偶然间发现了...【详细内容】
2021-12-23  Python阿杰    Tags:FastAPI   点击:(6)  评论:(0)  加入收藏
文章目录1、Quartz1.1 引入依赖<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version></dependency>...【详细内容】
2021-12-22  java老人头    Tags:框架   点击:(11)  评论:(0)  加入收藏
今天来梳理下 Spring 的整体脉络啦,为后面的文章做个铺垫~后面几篇文章应该会讲讲这些内容啦 Spring AOP 插件 (了好久都忘了 ) 分享下 4ye 在项目中利用 AOP + MybatisPlus 对...【详细内容】
2021-12-07  Java4ye    Tags:Spring   点击:(14)  评论:(0)  加入收藏
&emsp;前面通过入门案例介绍,我们发现在SpringSecurity中如果我们没有使用自定义的登录界面,那么SpringSecurity会给我们提供一个系统登录界面。但真实项目中我们一般都会使用...【详细内容】
2021-12-06  波哥带你学Java    Tags:SpringSecurity   点击:(18)  评论:(0)  加入收藏
React 简介 React 基本使用<div id="test"></div><script type="text/javascript" src="../js/react.development.js"></script><script type="text/javascript" src="../js...【详细内容】
2021-11-30  清闲的帆船先生    Tags:框架   点击:(19)  评论:(0)  加入收藏
流水线(Pipeline)是把一个重复的过程分解为若干个子过程,使每个子过程与其他子过程并行进行的技术。本文主要介绍了诞生于云原生时代的流水线框架 Argo。 什么是流水线?在计算机...【详细内容】
2021-11-30  叼着猫的鱼    Tags:框架   点击:(21)  评论:(0)  加入收藏
TKinterThinter 是标准的python包,你可以在linx,macos,windows上使用它,你不需要安装它,因为它是python自带的扩展包。 它采用TCL的控制接口,你可以非常方便地写出图形界面,如...【详细内容】
2021-11-30    梦回故里归来  Tags:框架   点击:(26)  评论:(0)  加入收藏
前言项目中的配置文件会有密码的存在,例如数据库的密码、邮箱的密码、FTP的密码等。配置的密码以明文的方式暴露,并不是一种安全的方式,特别是大型项目的生产环境中,因为配置文...【详细内容】
2021-11-17  充满元气的java爱好者  博客园  Tags:SpringBoot   点击:(25)  评论:(0)  加入收藏
一、搭建环境1、创建数据库表和表结构create table account(id INT identity(1,1) primary key,name varchar(20),[money] DECIMAL2、创建maven的工程SSM,在pom.xml文件引入...【详细内容】
2021-11-11  AT小白在线中  搜狐号  Tags:开发框架   点击:(29)  评论:(0)  加入收藏
SpringBoot开发的物联网通信平台系统项目功能模块 功能 说明 MQTT 1.SSL支持 2.集群化部署时暂不支持retain&will类型消 UDP ...【详细内容】
2021-11-05  小程序建站    Tags:SpringBoot   点击:(55)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条