从0开始学习微服务(一)

话不多说,首先介绍微服务的相关概念

所谓微服务就是将单体应用的本地调用改变为通过HTTP或者RPC远程调用的多应用

相比于传统单体应用的优缺点

单体应用缺点:

不同模块直接逻辑耦合性高

任何一个模块代码有改动时即使是不相关的模块也要重新打包部署

部署代码时候要时刻更改依赖版本,容易出错

部署时间久

任何一块代码逻辑错误可能导致整个系统崩溃

一些并发量高的模块和一些并发量低的模块部署在一起容易导致服务器压力过大系统效率低下,吞吐量变低

不同的功能模块分属不同的项目,可以部署在各个地方,扩展性好

模块之间耦合性低,模块之间的互相调用通过HTTP或者RPC的方式进行,可以引入消息队列等中间件,当一个模块出问题时不会影响其他模块
对于一些并发量高的模块可以单独部署,通过增加机器,集群部署来提高系统吞吐量,同时不会给别的服务器带来访问压力

实现一个微服务需要的相关组件

整体来看所谓微服务就是将逻辑上功能比较分离的模块拆分成一个单独的项目,比如淘宝的个人中心,当在其他模块,比如购物车模块,需要使用用户信息的时候就可以远程调用个人中心提供的相应服务,也就是接口,来获取个人信息,这个过程有几个关键的点

1.个人信息服务的描述

试想一下,在一个模块想要远程调用另一个模块提供的服务,首先要明白这个服务即接口需要哪些参数,会返回哪些信息,这些内容就是服务的描述

常用的服务描述比如进行restful api开发的时候可以使用swagger进行服务描述,可以表明该接口需要哪几种参数分别是什么类型等

2.个人信息的注册

当一个服务写完之后必须让别人知道怎么调用到改服务,这时候就需要注册,往往需要一个注册中心,常见的spring cloud,dubbo,wso2等开源框架都提供了注册中心,在注册中心注册完毕的服务可以暴露给其他模块调用

3.服务之间的调用方式

购物车模块现在明白了个人中心模块需要什么参数,也知道在哪里调用这个模块,下一个问题就是调用的方式了,是通过http掉还是Rpc调用

4.数据传输方式

模块之间的传输方式也必须事先规定,是json还是xml等

5.服务监控

在经过以上步骤后,两个服务直接可以正常调用了,此时我们需要对服务进行监控,记录不同接口的调用情况和成功率,这些信息可以帮助我们分析服务,比如某个服务的调用频率比较大,可以适当的进行集群部署并进行负载均衡,spring cloud等框架也提供了服务的检测,同时会将检测信息在dashboard上进行展示,比较直观

6.服务追踪

当购物者模块调用个人中心模块的服务时,会在本地生成一个requestID,当进行调用时会将requestId作为参数传递,个人中心在得到requestID后悔进行处理, 此时当调用出问题时,我们可以利用requestID进行追踪,从而快速定位问题

7.服务治理

不管是服务检查还是服务追踪最终的目的都是对服务进行治理,这也是微服务对比于单体应用的优点之一,比如服务直接调用出现问题时,比如网络不通,微服务框架可以重试,当重试也不能修复时会直接返回,不会一直卡在调用这一步而导致整个应用崩溃,比如spring cloud就提供了熔断机制,这也是服务治理的一个方面

序言 自从Martin Fowler对微服务作出定义之后,微服务便火遍大江南北, 网上出现很多文章来描述它的好处,也有很多文章来说明它的弊端。这便 让很多小伙伴无所适从,微服务究竟是什么,要不要使用微服务架构,怎 么实施微服务架构?我一直认为,微服务架构只是新瓶装老酒,这老酒就 是模块化。如果在做系统设计时,已经把模块化做得很好,转型微服务只 是顺理成章的事。如果模块化都做不好,转型微服务只会带来灾难。 2014 年底,我们团队意识到 Docker 技术可以帮我们大幅度提高软 件产品的性能,降低硬件的投入,提高运维效率,便开始着手研发基于 Docker 的 PaaS 平台。随后,很快发现,PaaS 平台只是解决了软件生命周 期后半部分(运维)的问题,就思考能否通过 Docker 技术来提高开发团 队的效率。例如,降低团队成员流动带来的风险,提高多团队协作的效率, 找到组件或知识积累的方法,让同一个软件产品能够适应不同客户的定制 化需求,等等。从此,就与微服务结下了不解之缘。这些目标确定后,通 用的PaaS平台的研发目标也就变成了解决以上问题的微服务平台的研发, 以及后来的青柳云平台本身的微服务化的实践。 在做微服务架构技术选型的时候,我们以“无侵入”和“社区活跃” 为最主要的考量点,也只有这样,将来在升级为原子服务架构、量子服务 架构的时候,甚至是恢复成单体架构的时候,代价才是最小的。所以,在 3 InfoQ 中文站 为数不多的可选项中,我们拥抱了 Spring Cloud。最后的结果就是使用 基于 Docker 的微服务平台进行开发和运行运维支撑,使用 Spring Cloud 进行业务系统开发,两者相互独立,并可被独立替换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值