目录

1、本篇博客的背景

2、为什么要使用微服务?

3、为什么要使用服务注册中心

4、怎样理解服务注册中心,服务提供者,服务调用者三者之间的关系?


1、本篇博客的背景

我目前正在学习微服务的一些知识,处于刚起步的阶段,已经学习了半个多月了,今天我想停下来,仔细思考总结一下。

(本人码龄尚浅,可能思考的很片面,或者认识不足,敬请各位看官谅解)

2、为什么要使用微服务?

我看网上的前辈们说,在原先的上古时代,当时的需求本来就是很少的,对软件的要求也没有那么的高。那么当时主要就是采用单体应用的开发方法。就包括我们计算机有关专业的学生在学校学习的时候,我们自己写的也都是单体应用,只创建一个项目,然后项目内创建很多的包(文件夹),进行一定的规范分层。由于我们的需求本来就比较的小,数据库的设计也不是很复杂,因此这种作坊式的单体应用的开发方式我们还可以使用,并且觉得使用的理所当然。

转眼间,时间来到了如今。在如今的生活中,每一个软件需要处理的业务范围越来越广,人们的需求也越来越多样化,需求也越来越复杂。因此,为了更加规范的进行软件开发,为了提高软件的健壮性,为了提高软件的开发效率,为了满足高并发的场景,为了不使得一个小模块的崩溃直接带崩我们的整个应用(这有点类似于进程和线程之间的关系),我们引入了微服务的软件设计开发框架。

3、为什么要使用服务注册中心

我们可以简单的理解,微服务就是将原先的单体应用的设计模式进行合理且必要的模块化,并且将数据库也进行一定的分离。(其实这样也是符合 软件设计的  高内聚低耦合   的要求的)。但是 低耦合不代表没有耦合, 各个微服务之间还是有交流的,或者说是有数据交换,有相互调用的。

这里就存在一个问题,当我们的微服务的数量越来越多的时候,他们之间的调用关系也是越来越复杂的。就像是一张渔网一样。这个时候,服务注册中心的概念就被提出来了。我理解的,服务注册中心,起初最简单的设计原因就是规范各个微服务之间的调用。举一个形象一点的例子,就像我们去医院看病一样,病人是服务调用者,医生是服务提供者,随着医院的规模的逐渐变大,不可能让病人直接就跑到医生所在的地方看病,然后医生再去需要的地方取药。所以每个医院都有挂号的地方。医院挂号的地方,就类似于我们这里的服务注册中心。

当然啦,随着技术的更新迭代,随着需求的不断的增多,服务注册中心也集成了,包含了很多的其它的一些功能。比如说,采用轮询实现负载均衡...........等。

4、怎样理解服务注册中心,服务提供者,服务调用者三者之间的关系?

在这里,我以比较经典的Eureka服务注册中心技术作为例子。

打个比方吧:

服务注册中心就类似于我们城市中的写字楼的物业。我们很多学生毕业以后或者大四的时候去的培训机构就像是服务的提供者。这些培训机构需要入驻到这个写字楼,也就是需要入驻到这个物业中去,需要到这个物业公司去注册,然后占据这个写字楼内的一席之地。

然后我们学生呢,当去参加培训的时候,就只需要到这个写字楼的一楼大厅,去查看一下我们需要到的培训机构叫什么名字,在那个楼层,然后就可以去了。

当然啦,写字楼,那些培训机构可以入驻,我们去哪里上课的学生也是可以入驻进去的呀。我们可以自己开一个空壳公司嘛! 哈哈哈哈,开个玩笑。

以上只是打个比方,方便理解。

无论是服务的调用者,还是服务的提供者,他们的地位是平等的,都可以注册到服务中心上去。或许,在这个关系中,A服务是服务调用者,但是,在另一个关系中,A服务就成为了服务提供者。

从某种意义上来说,服务注册中心也是一个微服务模块,毕竟,在我们的实际编码中,服务注册中心也是需要代码的。那么这样的话,服务注册中心完全可以自己把自己注册到自己的身上(说起来有点拗口了)。

在这里,我给大家贴一张图,方便大家理解(图片不是很清晰):

多说一下:

这里的Eureka包含两个组件:Eureka Server和Euraka Client。

除了服务注册中心以外的,都是Euraka Client。这个区别,在我们实际的编码中,会通过使用的注解的不一样,application文件的内容不一样而得到体现的。

初学SpringCloud:探讨一下为什么要使用微服务?,为什么要使用服务注册中心?怎样理解服务注册中心,服务提供者,服务调用者三者之间的关系?相关推荐

  1. 微服务、容器、DevOps三者之间的关系你清楚吗?

    作者 | JavaEdge 来源 | JavaEdge(ID:Java-Edge) 头图 | CSDN 下载自视觉中国 容器的普及,带来了微服务架构和DevOps的高速发展. 微服务的弊端 1.1 测 ...

  2. 微服务升级_SpringCloud Alibaba工作笔记0020---Nacos之命名和空间分组以及DataId三者之间的关系

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上一节咱们配置好了这个nacos的配置中心,然后从配置中心中获取了配置信息 现在nacos就可以替 ...

  3. SpringCloud 从菜鸟到大牛之一 微服务介绍

    最近 微服务概念在国内 甚嚣尘土,恰巧公司项目收尾,所以有点时间整理一下.总结自己这段时间学习微服务的历程和自己对微服务的简单理解. 首先,一定要记住 . 微服务是一种架构风格 微服务的提出 是 源于 ...

  4. 利用SpringCloud搭建一个最简单的微服务框架

    利用SpringCloud搭建一个最简单的微服务框架 https://blog.csdn.net/caicongyang/article/details/52974406 1.微服务 微服务主要包含服 ...

  5. Jenkins+GitLab+Docker+SpringCloud+Kubernetes实现可持续自动化微服务

    Jenkins+GitLab+Docker+SpringCloud+Kubernetes实现可持续自动化微服务

  6. springCloud与它的好兄弟微服务

    什么是spring could Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均 ...

  7. springcloud架构特点_打造企业级微服务平台架构,分布式应用场景管理

    微服务平台架构是一项在云中部署应用和服务的新技术.大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务. 微服务系统可以在"自己的程序"中运行,并通过"轻量 ...

  8. SpringCloud之消息总线组件及微服务网关

    消息总线组件 Spring Cloud Bus 单个工程更新 有了配置中心,我们就可以吧配置文件放到git上来统一管理了,但是如果配置文件发生了变化,客户端 又如何更新呢? 1.在配置文件中增加自定义 ...

  9. 【新书推荐】《ASP.NET Core微服务实战:在云环境中开发、测试和部署跨平台服务》 带你走近微服务开发...

    <ASP.NET Core 微服务实战>译者序:https://blog.jijiechen.com/post/aspnetcore-microservices-preface-by-tr ...

最新文章

  1. NOI2003文本编辑器
  2. mixamo网站_超全面的素材网站推荐
  3. Product search parameter的determine逻辑
  4. Javascript:js借助jQuery和fileSave将表格存储到world
  5. 匹配区县代码_北京各区县代码都是多少?
  6. Mac 自带 输入法 无法打出 一些汉字 生僻字 的问题,解决办法。
  7. 光纤交换机配置zone
  8. Python常用第三方库
  9. 安卓10侧边返回_向返回键说拜拜,安卓10向全面屏手势继续迈进
  10. matlab画图总结——二维图plot函数、图形标注和坐标轴控制、饼图、条形图、排列图;三维图的绘制
  11. javaweb mysql 连接池 c3p0 配置_javaWeb_JDBC_c3p0数据库连接池
  12. 用Java自动发邮件
  13. MATLAB-Simulink中BusCreator/Selector 和 Mux/Demux有什么区别?
  14. Linux服务器中Tomcat在执行./Shutdown.sh的时候报错
  15. Spark GraphX-航班飞行网图分析
  16. 解决Warning: NEWFF used in an obsolete way. See help for NEWFF to update calls to the new argument li
  17. 目标检测:各种网络结构对比
  18. iOS实现渐变色背景(两种方式实现)
  19. 无为,无我,无欲,居下,清虚,自然
  20. IP地址转换、主机大小端、htonl、ntohl实现

热门文章

  1. 动态效果html wow,WOW.js ? 在页面滚动时展现动感的元素动画效果_html/css_WEB-ITnose...
  2. 【Unity3d】当重新导入的动画出现问题的解决方案
  3. setInterval 和 setTimeout 用法
  4. HwPointEventFilter: do not support AFT because of no config
  5. Linux内核之 printk 打印
  6. 有哪些网站值得用python爬虫获取很有价值的数据
  7. uniapp app端 无法获取offsetHeight
  8. 算数级数和几何级数的时间复杂度
  9. 奇葩的零售业现象:跑的越快,跌的越狠
  10. SQL中的cast 和convert的区别,日期操作