【大话云原生】微服务篇-五星级酒店的服务方式

🚀 优质资源分享 🚀

学习路线指引(点击解锁)知识定位人群定位
🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

《大话云原生》系列文章期望用最通俗、简单的语言说明云原生生态系统内的组成及应用关系。此专栏的前两篇文章

  • 《【大话云原生】煮饺子与docker、kubernetes之间的关系》
  • 《【大话云原生】负载均衡篇-小饭馆的流量变大了》
    欢迎品鉴!

一、服务接待中心与微服务网关

老婆最近快过生日了,我答应她去旅游住一次五星级酒店。我查看了目的地的五星级酒店的价格,决定只住一天。第一次住所以查看了一下特色服务项目:擦鞋、熨烫衣物、机场绿色通道、专车接送等等,几乎在酒店场所范围内一切可以让你懒出奇迹的项目都可以提供。没出息的时不我待,插入房卡,一键拨通前台电话要求提供衣物熨烫服务,不一会服务人员就将衣物取走了,20分钟后送了回来。真是太方便了!
file

五星级酒店所有的服务只有一个入口:服务接待中心。这个服务接待中心和微服务软件架构中的网关功能真的是异曲同工啊

  • 提供服务请求的唯一入口,也是面向用户提供服务唯一入口
  • 对请求信息进行安全验证,因为我在入住时已经获得了房卡,这个房卡就像是在应用开发中的token(JWT、OAuth等登录认证方式都会发布令牌)
  • 有了这个房卡(令牌),我们才能通过服务接待中心请求服务项目。同样微服务网关也会进行权限验证后,才会提供API请求服务。

二、酒店内部通信录与服务注册中心

其实我们仔细想一想,服务接待中心(微服务网关)提供面向用户的服务入口。那么酒店内部部门之间是不是只对外提供服务,不对内提供服务?显然不是的。举几个例子:

  • 各种部们几乎都依赖采购部采购的物品,所以一定会和采购部申请服务用品
  • 服务部给客户送餐的时候,一定需要和餐饮部进行通信

对于微服务架构来说也是一样的,有的微服务直接面向用户提供服务,有的微服务是为系统内部服务提供服务。所以正确的架构方式是下面这样的。

file

当服务之间存在调用关系,就存在一个问题:各个部门(各个服务)之间如何联系,联系方式是什么?其实就是需要建立一个酒店内部的通信录,这个通信录只在酒店内部使用。对于微服务架构而言同样需要这样一个通信录

  • 在服务创建的时候,把自己的联系方式(ip、端口、服务名称)写在“通信录”上
  • 在服务下线的时候,自己的联系方式从“通信录”上被划掉

这个服务之间的“通信录”,对于微服务架构而言就被叫做:服务注册中心。常见的微服务注册中心有nacos、eureka、zookeeper等等。

三、微服务的高可用

我们再考虑一个问题,这么大的酒店是不是只有一个服务部,只有一个采购部?当然不会,即使只有一个部门,也会分成多个小组。比如:服务部A小组负责1-3楼、服务部小组B负责4-6楼,依次类推(这其实就是一个负载均衡算法)。所以进一步完善的架构应该是下面这样的。

file

  • 一个部门分成多个组,一旦A组忙不过来,B组完全可以过来帮忙。但在大多数情况下按照负载算法各司其职。
  • 一个好汉三个棒,有事大家一起扛。这在分布式服务架构中就是一种高可用的体现。
  • 不会因为一个小组的罢工导致整个服务部门瘫痪。这在服务架构中体现的是容错性和副本备份机制。

每个部门虽然分成了多个小组,但也会有该部门的统一的管理制度、服务标准。这个制度及服务标准统一制定,统一配置管理。对于微服务架构来说,也会有一个地方保存某一类微服务的统一配置信息,它就是服务配置管理中心。我们常见的服务配置管理中心有nacos、Spring Cloud Config等。(nacos既可以充当服务注册中心,也可以充当配置管理中心)

欢迎关注我的博客,更多精品知识合集

本文转载注明出处(必须带连接,不能只转文字):字母哥博客 - zimug.com

觉得对您有帮助的话,帮我点赞、分享!您的支持是我不竭的创作动力!。另外,笔者最近一段时间输出了如下的精品内容,期待您的关注。

  • 《kafka修炼之道》
  • 《手摸手教你学Spring Boot2.0》
  • 《Spring Security-JWT-OAuth2一本通》
  • 《实战前后端分离RBAC权限管理系统》
  • 《实战SpringCloud微服务从青铜到王者》

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

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

相关文章

从C#到TypeScript - Generator

从C#到TypeScript - Generator 上篇讲了Promise,Promise的执行需要不停的调用then,虽然比callback要好些,但也显得累赘。所以ES6里添加了Generator来做流程控制,可以更直观的执行Promise,但终级方案还是ES7议案中的asy…

C#中检查null的语法糖

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

iOS UItextView监听输入特定字符跳转页面选择选项返回

今天有朋友问我一个需求的实现,于是自己写了一个Demo简单的实现了一下: 需求是: 1>比如: 检测用户输入"A"字符串,跳转页面选择选项,将选择的选项放置textView里,作为当前的输入; 2>不是"A"字符,则正常的textView输入; 3.用户跳转选择了,则将选择的输…

PDCA循环——快速提升软件质量的必备工具

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

oracle 表空间 用户

-- create user mapecun identified by "accp"; --alter user 用户名 quota unlimited on 表空间; --alter user mapecun quota unlimited on USERS; --grant create sequence to mapecun; /** grant create session to mapecun; grant create table to mapecun; g…

如何在Web前端实现CAD图文字全文搜索功能之技术分享

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

基于Java (spring-boot)的仓库管理系统

一、项目介绍 本系统的使用者一共有系统管理员、仓库管理员和普通用户这3种角色: 1.系统管理员:通过登录系统后,可以进行管理员和用户信息的管理、仓库和物品分类的管理,以及操作日志的查询,具有全面的系统管理权限。 2.仓库管理…

基于语义感知SBST的API场景测试智能生成

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

【KMP模板】简单写个KMP~

本来easy的KMP 却一直过不了洛谷的模板题。。。 仔细一看原来在输出next数组时打的回车而不是空格。。。 身败名裂。。。 话说有个sunday貌似一般状况下比KMP快呢。。。去看看2333 #include<cstdio> #include<iostream> #include<cstring> #include<algor…

2015 CALLED THE INTERFACE OF 2014

Writer&#xff1a;BYSocket&#xff08;泥沙砖瓦浆木匠&#xff09; 微博&#xff1a;BYSocket豆瓣&#xff1a;BYSocketReprint it anywhere u want. ”Hi , Happy New Year.Written in Stupid Enlish,Dont push me *.* ” 2014 System 2015 is coming.But 2014 is not over.…

论文解读(MERIT)《Multi-Scale Contrastive Siamese Networks for Self-Supervised Graph Representation Learni

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

Fiddler抓包9-保存会话(save)

前言 为什么要保存会话呢&#xff1f;举个很简单的场景&#xff0c;你在上海测试某个功能接口的时候&#xff0c;发现了一个BUG&#xff0c;而开发这个接口的开发人员是北京的一家合作公司。你这时候给对方开发提bug&#xff0c; 如何显得专业一点&#xff0c;能让对方心服口服…

『现学现忘』Git基础 — 17、Commit对象

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

Spring/MVC映射WEB-INF下的文件(img、css、js等)

学过Mvc的都知道并且会访问该目录下面的jsp 页面&#xff08;这是最基础的&#xff09; 但我们想访问里面的图片什么的&#xff0c;又该怎么去访问呢&#xff0c; 一句代码&#xff1a; <mvc:resources mapping"/img/**" location"/WEB-INF/img/"/> …

NSDate 类的总结,全面基础

NSDate 类的总结,全面基础 <span style"font-size:24px;"><span style"font-size:18px;">//1.创建日期对象//创建的NSDate对象,获得的永远是0时区时间,假设要是求东八区时间,就加8个小时NSDate *date [NSDate date];NSLog("%",date…

《HelloGitHub》第 73 期

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

FTP命令大全

项目需要&#xff0c;接触到ftp的一些操作&#xff0c;这里搬运一些ftp命令供以后参考 命令描述ABOR(ABORT)此命令使服务器终止前一个FTP服务命令以及任何相关数据传输。ACCT(ACCOUNT)此命令的参数部分使用一个Telnet字符串来指明用户的账户。ADAT(AUTHENTICATION/SECURITY DAT…

typora + EasyBlogImageForTypora直接上传图片到博客园

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

20155320 第十一周课堂总结

20155320 第十一周课堂总结 未及时提交原因&#xff1a; 对代码掌握的不熟练&#xff0c;并且由于起初不知道自己电脑浏览器不支持蓝墨云图片提交&#xff0c;尝试几次后只能把图片传到手机上导致截图没有及时提交 1,。测试题目 1.修改教材P74 一行代码 NineNineTable.java, 让…

Nginx的安装(笔记)

0, 先决条件Nginx 依赖 zlib zlib-devel gcc-c libtool openssl openssl-devel pcre安装命令&#xff1a;yum -y install make zlib zlib-devel gcc-c libtool openssl openssl-devel pcre安装命令&#xff1a;wget http://downloads.sourceforge.net/project/pcre/pcre/8.41/p…