内容简介:周末又看了一个微服务专栏,还是上家公司工程师写的,重实战,理论体系差一点,所以有些地方说不到位,但确实提供了一个完整的概念,本文做个笔记。微服务本质是为了提升效率:开发效率、协作效率、运维效率。微服务的特点就是拆分力度更细、服务独立部署、独立维护、更高的治理能力。对于小团队,我觉得能做到服务化也非常不错,而微服务则结合了敏捷开发、持续交付、容器化、DevOps,要求更高。
周末又看了一个微服务专栏,还是上家公司工程师写的,重实战,理论体系差一点,所以有些地方说不到位,但确实提供了一个完整的概念,本文做个笔记。
微服务本质是为了提升效率:开发效率、协作效率、运维效率。微服务的特点就是拆分力度更细、服务独立部署、独立维护、更高的治理能力。
对于小团队,我觉得能做到服务化也非常不错,而微服务则结合了敏捷开发、持续交付、容器化、DevOps,要求更高。
微服务包含的核心组件:
-
服务描述,就是如何定义和发布你的服务,一般和RPC框架紧密联系。
-
注册中心,由于微服务拆分的非常细,调用者和服务者必须通过发布和订阅的方式互相协作。
-
服务框架,微服务粒度非常细,所以必须有一个RPC框架,定义通信协议、数据传输方式、序列化、服务定义,是不是RPC框架等同于微服务?
单体应用一般使用短连接,服务请求都在本地,而微服务拆分的太细,必须有更好的网络通信框架,比如开始以为gRPC是跨语言的框架,后来了解到只是客户端支持多语言,说明 PHP 语言不太合适了。
-
服务治理,为了更好的解决问题,包括监控、敏捷开发等,即使不搞微服务,服务治理也是非常重要的。
学好微服务可能要掌握一个RPC框架,而RPC框架的编程方式和类PHP动态语言机制是非常不同的,需要转变思路,比如并发编程、网络通信框架,线程池,所以 Go 语言?
微服务核心是RPC框架和异步队列,所以不管什么架构,队列解耦都非常重要,不管搞不搞微服务,队列应该好好琢磨。
对于服务治理来说,如何管理节点,客户端如何进行负载均衡、路由(在单体应用中主要是服务器短控制)、容错,都非常复杂。比如在容错方面,调用失败是常态,所以如何解决呢?调用不了数据库怎么办?单体应用由于业务比较耦合,一个数据库连接实例能服务很多查询,而微服务由于调用之间都是隔离的,情况就更复杂。
有些RPC框架包含了注册中心、服务框架、服务治理,两张图给我印象深刻。
dubbo服务治理图:
dubbo一次完整的调用图:
dubbo这样的RPC框架包含基本的微服务组件,而Spring Cloud全家桶提供服务注册组件、配置中心组件、负载均衡组件、追踪组件,如下图:
从上图看出,不管将来搞不搞微服务,对于监控来说,Zipkin、ELK、Prometheus可以整一整。
微服务是和容器化、DevOps紧密相连的,所以理解它们也很重要。
Docker进程是一个应用级进程,却有自己独立的空间,Docker镜像不光可以打包应用程序本身,还可以打包应用程序的依赖,甚至包含操作系统。有了Docker,就可以保持开发环境、测试环境、线上环境一致性。Docker本质上是分层机制,
容器化后,其本身如何管理呢?它需要发布到镜像仓库中,如何搭建自己的镜像仓库?原理是什么?如何满足高可用和一致性?
镜像要发布到什么机器上呢?这属于资源调度的问题,难点在于如何对接不同的集群,管理集群的权限,如何初始化集群的环境,比如引入Ansible,一致化操作系统和应用环境都非常重要。
服务发布的时候,选择那些机器部署属于容器调度,著名的就是Kubernetes,难点在于如何知道那些机器是存活的,不同集群类型对应的服务器配置, 具体的调度策略是什么。
什么是服务编排呢?
-
微服务之间是有依赖的,这就要求在容器调度的时候,考虑依赖的问题。
-
服务发现,如何让消费者发现服务?
-
扩容缩容
感觉 docker 、Kubernetes和微服务结合很紧密,但不搞微服务,它们也非常重要,容器化运维平台应该怎么搞?
容器化也要涉及到DevOps了,DevOps的出现也是因为效率的需要,让开发、测试、运维不隔离,合为一体,开发人员不仅要负责业务开发,还要负责测试以及上线发布跟踪等一系列过程,其核心概念就是CI/CD,持续集成、持续部署,主要的技术栈就是GitLab或Jenkins。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 一文了解 Kubernetes 中的服务发现
- 书单丨构建响应式微服务架构——5本书了解微服务最新动向
- 10张图带你了解后台服务架构演变
- 『高级篇』docker之服务编排了解Mesos(22)
- 了解如何在服务网格中进行性能测试
- 一篇文章了解Consul服务发现实现原理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Mashups Web 2.0开发技术—— 基于Amazon.com
萨拉汉 / 吴宏泉 / 清华大学 / 2008-1 / 48.00元
《MashupsWeb2.0开发技术(基于Amazon.Com) 》介绍了mashup的底层技术,并且第一次展示了如何创建mashup的应用程序。Amazon.com与Web服务强势结合,拓展了Internet的应用范围,使得开发人员可以把Amazon的数据和其他的可利用资源自由地结合起来创建功能丰富的全新应用程序,这种应用程序叫做mashup。 《MashupsWeb2.0开发技术(基于A......一起来看看 《Mashups Web 2.0开发技术—— 基于Amazon.com》 这本书的介绍吧!