分布式系统如何寻址?通过 RPC 框架 , 能够解决服务之间的跨网络通信问题 , 是微服务改造的基础 。
服务拆分之后 , 需要维护更多细粒度的服务 , 这样就涉及到 RPC 客户端服到服务端的 部署地址问题 , 如何维护? 这个时候就需要服务注册和发现 。
什么叫服务发现?所谓的服务发现 , 就是让服务调用方知道服务提供方的地址是啥? 比如 Ngnix 作为反向代理器 , 可以这样当请求到来时 , 可以通过 Nginx 知道应用服务器的地址是什么 。这个就叫:服务发现 。
Nginx 是怎么做服务发现的?答案:Nginx 是将应用服务器的地址放在配置文件中 。
vi nginx.conflocation/ {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 的通信:
文章插图
- 客户端与注册中心建立连接 , 告诉注册中心 。
- 服务端向注册中心注册服务后 , 注册中心会将最新的服务注册信息通知给客户端 。
- 客户端拿到服务端的地址之后 , 就可以向服务端发起调用请求 。
什么是优雅关机优雅关机的相对面是暴力关机 , 暴力停止服务 , 已经发送的请求还没有来得及处理 , 就被杀掉 , 这样会造成部分请求失败 。因此需要在服务端退出的时候 , 先停止掉流量 , 不再受理新的请求 , 当服务处理完之后再关闭 。
推荐阅读
- 如何优雅地使用httprunner测试框架进行接口测试?收藏
- 如何清洗空调,空调清洗方法步骤 空调清洗怎么清洗
- Spring Cloud微服务分布式物联网平台前后端分离源码
- 不同的场合该如何泡茶,如何泡茶
- 玻璃茶具代表作,玻璃茶具欣赏
- 如何关闭电脑弹窗广告???请这么做
- 驾照到期了如何换新驾照?
- 一款功能强大的路由器系统-软路由-RouterOS
- 蚂蚁庄园今日答案我国古代四大美女 蚂蚁庄园我国古代人们如何称呼对方的妻子
- 怀表收藏如何挑选