虽然现在开源的微服务框架有很多,各种编程语言的都有,花上几个小时搭建一套可运行的开发环境也并不是一件难事 。但毕竟微服务涉及的组件还是挺多的,相比于单体架构来说,复杂度提升了不少 。
文章插图
说起微服务,大家应该并不陌生,不只是一线大厂,很多中小规模团队也已经将这项技术引入并在实际业务中落地 。
那作为一名开发人员,应该如何学习微服务呢?
虽然现在开源的微服务框架有很多,各种编程语言的都有,花上几个小时搭建一套可运行的开发环境也并不是一件难事 。但毕竟微服务涉及的组件还是挺多的,相比于单体架构来说,复杂度提升了不少 。
不知道你有没有和我一样的困扰,有时候想要深入学习一下,但却不知道从什么地方入手,结果就是对其了解只是浮于表面 。
所以我最近看了极客时间的专栏《从 0 开始学微服务》,觉得作为入门还是不错的 。
同时,我总结了专栏中的部分内容,并加入一些自己的思考,形成了这篇文章 。算是学习微服务的一个大纲,然后再按照这个大纲去深入学习,不断充实这套技术体系 。
好了,下面正文开始 。
什么是微服务微服务是指开发应用所用的一种架构形式 。通过微服务,可将大型应用分解成多个独立的组件,其中每个组件都有各自的责任领域 。在处理一个用户请求时,基于微服务的应用可能会调用许多内部微服务来共同生成其响应 。
文章插图
微服务的特点:
- 服务拆分粒度: 小到一个子模块,只要该模块依赖的资源与其他模块都没有关系,那么就可以拆分为一个微服务 。
- 服务独立部署: 每个微服务都严格遵循独立打包部署的准则,互不影响 。比如一台物理机上可以部署多个 Docker 实例,每个 Docker 实例可以部署一个微服务的代码 。
- 服务独立维护: 每个微服务都可以交由一个小团队甚至个人来开发、测试、发布和运维,并对整个生命周期负责 。
- 服务治理能力要求高: 因为拆分为微服务之后,服务的数量变多,因此需要有统一的服务治理平台,来对各个服务进行管理 。
文章插图
最常见的服务发布和引用的方式有三种:
- RESTful API
- XML 配置
- IDL 文件
XML 配置这种方式下需要在服务提供者和服务消费者之间维持一份对等的 XML 配置文件,来保证服务调用 。比如提供者维护 server.xml,消费者维护 client.xml 。
在接口变更时,需要同时修改这两个接口描述文件 。
IDL 文件IDL 就是接口描述语言(interface description language)的缩写,通过一种中立的方式来描述接口,使得在不同的平台上运行的对象和不同语言编写的程序可以相互通信交流 。
也就是说 IDL 主要是用作跨语言平台的服务之间的调用,有两种最常用的 IDL:一个是 Facebook 开源的 Thrift 协议,另一个是 google 开源的 gRPC 协议 。
小结每种方式都有各自的优缺点,具体应该如何选择,需要根据自身的业务特点 。
使用场景
缺点
RESTful API
跨语言平台,组织内外皆可
使用 HTTP 作为通信协议,相比于 TCP,性能较差
XML 配置
JAVA 平台,一般用于组织内部
推荐阅读
- 使用 Python 构建 Web 应用程序从未如此简单——从 Pynecone 开始
- MongoDB数据库性能监控看这一篇就够了
- MySql主从复制配置,你了解吗?来看这篇,全懂了
- 教师|学生“理想职业调研”:从想当科学家,变成网红明星,值得深思
- 纵横永生从风云开始?永生 怎么在起点上搜不到了 搜 梦入神机 也没看到永生啊 怎么回事?
- 求职|生活一团乱麻时,如何从中理出头绪来?
- 车辆工程毕业后从事什么工作 车辆工程专业就业
- 娱乐圈|假发假臀假肌肉,“从头假到脚”,还有什么是真的?
- 看淡,心静,积极的句子 清心寡欲的文章
- 赵文瑄|假发假臀假肌肉,大半个娱乐圈“从头假到脚”,还有什么是真的?