微服务发展以及微服务面临的挑战

简介: 你睁开惺忪的睡眼,一看手机,发现已经过了中午12点了,于是顺手点了一份中午的外卖。当你打开手机淘宝,发现自己昨晚坚持到双十一零点的战绩,满满的待发货与待收货的红点。其实你也没多想,翻了个身,刷起了抖音...漫游在这个便捷而又精彩纷呈的互联网世界。看起来微服务技术与我们的生活毫无相关,但是我们的生活又...

你睁开惺忪的睡眼,一看手机,发现已经过了中午12点了,于是顺手点了一份中午的外卖。当你打开手机淘宝,发现自己昨晚坚持到双十一零点的战绩,满满的待发货与待收货的红点。其实你也没多想,翻了个身,刷起了抖音...漫游在这个便捷而又精彩纷呈的互联网世界。看起来微服务技术与我们的生活毫无相关,但是我们的生活又离不开微服务,我们随手的一个点击下单动作,在计算机世界中发生了什么样的变化?在瞬息之间,亿万次服务的调用又是如何自然而又精密地运行着,相互关联并且相互影响着。可以说我们的生活离不开这些微服务系统。接下来,让我们一起来了解与学习微服务技术,一起探索微服务技术的发展。

微服务的兴起其实是一个必然的过程,在这之前的 IT 系统大多是单体应用,简单来说,就是一个系统的所有子程序都是运行在同一台机器上面,那么系统的各个子程序之间影响与依赖关系也不会那么复杂。在业务发展初期,这样做的好处非常明显,利于开发、部署、问题诊断等等,但是坏处也有不少,比如任意一块逻辑的改动,都需要整个系统应用重新部署。技术的发展跟业务的发展诉求息息相关,随着互联网进入 2.0,各种门户网站、Web 应用涌现出来了,出现更多的交互以及渲染,用户的访问量也出现了巨大的增长,软件复杂度导致了维护成本的大幅上升。整体而言对技术的整体要求变高了,单体应用已经不能满足日益复杂的业务需求,也随着小型机成本的大幅下降,以及单节点的可靠性难以保证等因素的影响下,软件行业逐渐进入到了SOA跟微服务时代。

为什么微服务自提出之日到目前为止可以如此地被广泛应用,热度一直居高不下?微服务的理念其实就是把一件极其复杂的事情,拆分成一系列微小简单的服务来完成。就好比工厂制造手机,如果需要工人单独完成手机的制造,那就是不可能的事情,一方面效率不高,另一方面对工人的要求极高,不可能低成本找到符合条件的员工。但如果工厂把制作手机的流程进行拆分成一系列简单的步骤,以流水线的方式组织协同就可以实现低成本的方式量产手机。那么对比到微服务架构,就是将复杂的业务系统拆分成一系列简单的服务,且每个服务都是一个独立的应用且运行在各自的进程内,各个服务之间通过远程通信的方式交互。

image

手机生产流水线

非常自然的,微服务架构带来如下几点好处:

  • 效率与成本:通过将一块庞大复杂的业务逻辑拆分成多个服务的方法,做到在达到同样业务诉求目标的情况下,应用被分解成多个可管理的服务,提供了模块化的解决方式。每个服务的通过服务契约定义好作用与边界,对于每个微服务的开发来说相比原先巨大的业务应用,单个独立服务的开发复杂度与维护成本大幅降低。因为各个服务之间通过远程通信方式交互,那么对于每个独立的服务而言,开发、部署都是相对独立,可以自由地选择喜好的语言进行开发,可以选择合适的方式进行部署,甚至可以给不同的服务选择更合适的硬件进行部署,对于开发、维护、硬件的成本优化都带来了非常大的好处。

  • 稳定性:相比单体应用而言,一旦应用故障那么整个系统就直接宕机。为服务化之后,即使单个服务出现了问题,也不会直接影响整体的服务的可用性,结合合适的微服务治理能力以及弹性扩缩容能力,可以将影响面降低到最低,甚至可以做到故障自愈。

  • 高可扩展性:微服务化之后,系统可以很好地面对横向、纵向方式扩展的需求。一方面我们可以“按需扩容”,大促来袭时,通过添加机器的方式实现系统的快速扩容,大促结束后释放机器,对系统资源进行充分地利用;另一方面,随着业务地增长,我们可以通过增加微服务的方式满足业务的快速发展的需求。

image

复杂的微服务链路

谈完好处,大家也会想到紧接着就是一句,但是微服务并不是银弹。随着微服务化的深入,本身的使命是让业务的迭代更加高效,但当我们的微服务数量逐步增多,链路越来越长,如果不进行进一步的治理,那么引发的效率问题可能会大于微服务架构本身带来的架构红利,为系统的开发与运维带来了新的挑战。

  • 效率:随着系统微服务拆分进行,一次请求内部往往会涉及到多个微服务系统的调用。开发运维人员必须面对分布式系统带来的复杂度,服务间的依赖关系错综复杂,随着微服务数量的增加,问题的复杂程度指数上升,开发以及问题诊断的效率极速下降;

  • 稳定性:由于微服务之间的依赖关系错综复杂,在大规模之下,再小的问题都会牵一发而动全身。面对海量的流量调用、不确定的用户行为、高速迭代的业务需求以及频繁地系统变更。微服务系统难免会出现预期外的异常行为,这种不一致的行为轻则造成系统用户的体验降低,重则导致不可恢复的系统异常。

微服务带来的新挑战无疑让人头痛,但也带来了新技术的发展契机,科技的发展总是这样循环往复,螺旋式上升,它们带来的新问题,也使得微服务治理技术在这些年兴起

相关文章
|
前端开发 Java 数据库连接
MyBatis查询优化:枚举在条件构建中的妙用
MyBatis查询优化:枚举在条件构建中的妙用
|
Java API 数据库
Java一分钟之-JPA注解:@Entity, @Table, @Id等
【6月更文挑战第14天】Java Persistence API (JPA) 是Java开发中的ORM框架,通过注解简化数据访问层。本文介绍了三个核心注解:`@Entity`标识实体类,`@Table`自定义表名,`@Id`定义主键。易错点包括忘记添加`@Entity`、未正确设置主键。建议使用`@GeneratedValue`和`@Column`细化主键策略和字段映射。正确理解和应用这些注解能提高开发效率和代码质量。
1541 3
|
Java 开发工具
mac下解决intellij idea启动慢和debug卡死问题
mac下解决intellij idea启动慢和debug卡死问题
4597 0
mac下解决intellij idea启动慢和debug卡死问题
|
Prometheus Cloud Native 数据可视化
Istio可观测性
Istio可观测性
405 2
|
Ubuntu Linux Shell
Apache介绍和安装
Apache是开源的高性能Web服务器,支持跨平台部署,具备模块化、高安全性和稳定性等特点,广泛用于企业网站、电商及内容管理系统。本文详细介绍其安装配置方法,涵盖主流Linux系统下的源码编译与包管理安装步骤。
1126 0
Apache介绍和安装
|
12月前
|
存储 运维 监控
OpenFeature 实战:统一特征开关在风控模型的落地与灰度发布方案
在金融风控场景中,模型迭代速度与线上稳定性之间的平衡是一大挑战。传统硬编码方式存在耦合度高、控制粒度粗、缺乏审计等问题,导致误拦截损失显著。本文介绍了基于 OpenFeature 的解决方案,通过动态配置、细粒度控制和多语言支持实现高效特征管理,并结合灰度发布、熔断机制和安全审计提升系统稳定性与发布安全性。实战数据显示,该方案显著缩短上线周期、降低故障率并提升模型覆盖率,具备高可用性和可扩展性,适用于复杂风控环境下的策略迭代需求。
746 8
|
Kubernetes Linux KVM
利用minikube在单机上构建k8s环境
这就是熊熊在它的小木屋里模拟森林的旅程。它享受到了随时随地使用Kubernetes的愉快,也享受到了大森林带来的各种可能。现在,熊熊不再害怕找食物的问题了,因为它有了 Minikube 这个神奇的掌中宝。
294 26
|
API 开发工具 开发者
抖音商品详情API入门:为开发者和商家打造增长工具箱
抖音商品详情API入门:为开发者和商家打造增长工具箱
|
Kubernetes jenkins Linux
两大容器管理平台,Kubernetes与OpenShift有什么区别?
两大容器管理平台,Kubernetes与OpenShift有什么区别?
|
Kubernetes 监控 负载均衡
Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?
本文介绍了服务网格(Service Mesh)的概念及其在微服务架构中的重要性。微服务强调围绕业务构建团队和去中心化的数据管理,带来更高的灵活性和扩展性。然而,随着服务数量增加,网络通信成为挑战,包括服务发现、路由和安全等问题。 Service Mesh如Istio应运而生,通过边车代理解决服务间通信,提供服务发现、负载均衡、智能路由、安全和监控等功能。它与Kubernetes结合,增强了容器环境的服务管理能力。Istio的bookinfo示例展示了其在多语言微服务中的应用,简化了代码中的服务调用逻辑,使开发更专注于业务本身。
1309 3
Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?