浅谈微服务

开场

​ 今天跟大家聊聊微服务的概念以及我对微服务的理解,目的是为了让准备学习微服务一系列知识的小伙伴大概了解一下自己都要学啥,为啥学。当然,微服务是一个概念,所有语言都适用,本篇仅以Java为例。嗯,很严肃的开场白,话不多说,开整。

微服务是啥?

​ 微服务是一个 分布式 系统,主要的思路是将 应用程序 分解成 一套 由 较小 的服务组成的 互联服务

​ 这里的应用程序,指我们原来传统的 SSH 啊 SSM 架构搭建的应用,也就是单体应用。微服务火之前,大家代码写完测试完,打成一整个war包部署到服务器上或者被打包成自包含 (self-contained) 的可执行 JAR,这样的应用就称为单体应用。

​ 我们举个例子,一个应用,XXX管理系统,很常见对吧,里面现有订单管理(A),用户管理(B),通知管理(C)三个功能模块单体项目呢就是 A B C三个模块打包成一个War包,复制到服务器上,就能运行了。对于这个应用的微服务版本是什么呢,A,B,C模块都是单独的一个应用,都有自己的业务逻辑等,可以自己单独运行,每个模块都对外提供一个供他人调用的 API 接口,实现模块之间的相互调用。相对于原来的ABC三个功能模块在一起的服务,每个模块做为一个服务,实现模块间的松耦合,这也就是微服务做的事儿。

​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rPE7D8Lh-1583127091401)(E:\Java\new_Java_Study\daily_notes\pictures\articles\单体应用到微服务.png)]

​ (图为打车软件,分为用户,司机,行程,通知,支付,账单六个模块)

​ 那么相对于单体应用,为什么微服务就火起来了呢?现在90%的互联网企业都要把单体应用拆成较小的互联服务?

为啥微服务火了?

​ **场景一:**服务问题

​ 还是刚刚的应用,其中A模块更新了,怎么办?

  1. 打包整个项目,包含A,B,C;
  2. 服务器关掉,拷贝打包好的应用程序部署到服务器上;
  3. 开启服务器。

​ 简不简单?步骤肯定是简单的,大体的三步,一个应用就更新完了,传统的项目大多这么启动执行的。但是越简单的问题越容易引发思考。这中间会出现什么问题?

​ A更新,可以,但是应用在没做负载均衡1的时候,不好意思,整个服务宕机不能用。如果有人说企业怎么会不做负载均衡?不好意思,我现在在的公司就不做🙂

​ 服务器宕机,很糟糕的情况。而你想要部署,怎么办,只能等到整个服务不用了,才能关服务开始部署。那么微服务起了什么作用呢?A更新A的,不影响B和C的使用,如何实现的,也就是上文说的A,B,C是相互独立的应用,他们之间的可以独立运行,通过远程调用实现相互间调用,这么一看,是不是就感觉有点厉害了?还不够嘛,来看场景二。

**场景二:**时间问题

​ 我不但A更新了,我还新增了功能模块D,单体应用,一样的打包war停服务启动服务,这么一看是不是还是很简单,但是我们只增加了一个模块,启动时间相差不大,后来呢?我们有E,F,G,H,I,J…模块,整个应用越做越大,啧,启动一次半小时,想想就刺激。

​ 那么微服务能做什么呢?你有新模块了,行啊你部署呗,我原来的服务照常使用,不影响,要就服务调用新增的服务,我们再对其单独更新,松耦合的思想(此处敲黑板!)时间就是金钱,每次重启半小时,你暴躁嘛?你耐心好?好吧,我们来看场景三。

**场景三:**程序容错性(其实程序容错性有个感觉更牛逼的叫法,忘了)

​ 有一天,A报错了,会出现啥情况?单体应用所有模块都运行在同一进程中,任何模块的一个 bug,比如内存泄漏,可能会拖垮整个进程。此外,由于应用程序的所有实例都是相同的,该错误将影响到整个应用的可用性。但是微服务就不一样啦,A错了,没事,先不用A,我B和C还是正常能用的,怎么感觉都比单体应用厉害呀。

**场景四:**扩展性问题

​ 假设,公司开办已过十年,十年前使用QWE框架,公司的主要服务就依靠这个了,赖以生存的根本。但是现在,不好意思,QWE已经慢慢淘汰了,公司想在现有服务上进行扩展,怎么办?

  1. 接着使用QWE框架

    不要意思,现在大家都不学了,你招会用的,可以,老框架-》有经验的-》高成本。啧,花钱多,难受了。

  2. 重构程序

    不要想了,时间+金钱,更复杂

​ 这也是单体应用的一个弊端,采用新的技术将会非常困难。那么微服务能干啥?嘿嘿,开发人员当编写一个新服务时,他们可以选择当前的技术。而且微服务嘛,由于服务较小,使用当前技术重写旧服务将变得更加可行,想想就刺激。

小结

​ 看完了是不是觉得怪不得大家都在说微服务,优势明显,但其实构建微服务本质上是困难的,并不是所有的应用都是用于微服务,像一些简单的,轻量级的应用你使用微服务?可以,但其实没有很大的必要。微服务架构模式是复杂、持续发展应用的一个更好的选择,孰优孰劣,依旧要看具体情况。但是微服务还是要学的呀。

​ 好啦,本篇主要将微服务和单体应用之间进行了对比,彰显了微服务的优点。但是有优就有劣,以后会接着本篇谈谈微服务的劣势等。

​ ps:如果有小伙伴或者大佬觉得有错误的地方,可以纠正我,万分感谢~我是小白一个,嗯。至此,撒花~


  1. 一个应用部署在多个服务器上,根据情况动态调用不同服务器上的应用,以应对流量过载、服务宕机等情况,加强网络数据处理能力、提高网络的灵活性和可用性 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值