关于微服务的一点感悟和过往经验的思考

一、为什么有微服务

解决单体应用的局限性
随着业务发展,业务逻辑复杂、关联方多,导致业务系统的代码臃肿、难于做迭代或者维护,导致很多的问题,如:bug多、难于维护修复、每次需要评估改动服务接口影响的范围,开发周期长等。为了解决这些问题,微服务架构应运而生,它将应用拆分成多个小服务,每个服务都是独立、可单独部署的,从而提高系统的可扩展性、可维护性和可靠性。

应对复杂业务场景
传统的单体应用架构已经无法满足快速变化的市场需求。微服务架构通过将业务拆分成多个小服务,每个服务专注于完成一个业务功能,从而降低了业务之间的耦合度,使得每个服务都可以独立进行开发、测试、部署和扩展。这种灵活性使得微服务架构能够更好地应对复杂业务场景,满足快速变化的市场需求。

技术发展的推动
随分布式系统、容器化技术、CI、CD的产生,让微服务的开发、管理变得方便而高效

二、现有哪些微服务技术

前存在多种微服务技术,以下是一些常见的微服务技术,特别是在企业级开发中常用的:

Spring Cloud
Spring Cloud是Java领域微服务架构的王者。它提供了一套完整的微服务解决方案,包括服务发现、配置管理、智能路由、服务网关、负载均衡、熔断器、分布式跟踪等。Spring Cloud与Spring Boot的结合使用,可以非常快速地搭建起微服务架构。
Dubbo
Dubbo是阿里巴巴开源的一款高性能、轻量级的Java RPC框架。它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。Dubbo可以很好地处理服务之间的通信和治理问题。
Kubernetes
Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署、规划、更新、维护的一种机制。
Nacos
Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它更适合于云原生架构中的服务治理、配置管理和服务注册与发现。
Service Fabric
Service Fabric是微软推出的一个微服务框架,用于构建和运行可伸缩且可靠的无服务器和容器化微服务。它提供了系统级的可靠性和性能,使开发人员能够专注于实现业务逻辑

三、微服务有哪些特点

独立性
每个微服务都是独立的,可以独立开发、测试、部署和扩展。

松耦合
微服务之间通过轻量级的通信机制(如API、消息队列等)进行交互,降低了服务之间的耦合度。

自治性
每个微服务都可以独立选择技术栈、数据库和部署方式。

容错性
由于服务之间的松耦合,某个微服务的故障不会影响其他服务的正常运行
相比原有的

关于松耦合特性,原有的传统服务的服务通信应该用到进程或者共享变量、如果需要很复杂的业务逻辑的情况下,这种就会造成资源的开销大、代码复杂性高的弊端;如果使用微服务的框架,例如RPC(HSF、Thrift)等,可以拆成简单的api调用,并且本身服务和服务之间的体量就会小很多,我们可以很容易的实现业务的交织的调用过程,e.g. 订单中心调用调度算法,调度算法调用地图的计算逻辑,实现订单的派单过程
上面的好处连带的优势就是开发新功能或者扩展已有的业务变得简单,不需要整体的在一个大服务内执行应用发布,只需要变更关联的api接口挂载的应用即可,减少了开发周期和成本,能够做到快速迭代
独立性的好处就是技术可以异构,不依赖于语言,前端的代码也是一个服务,后端的代码也是一个服务,借助现有的RPC框架,可以做到跨语言的调用,例如使用Thrift这个RPC框架

四、微服务的弊端

分布式复杂性:微服务架构是分布式系统,需要更多的测试和监控来确保服务之间的通信正常。一般会通过中间件消息队列实现服务的通信和共享资源的分享,这就带来了分布式领域下的数据同步和一致性的挑战

服务划分难度:如何合理地将系统拆分成多个微服务是一个挑战。如果拆分的不对,会造成后续的很多反复、繁杂的工作挑战

运维复杂度:随着微服务数量的增加,运维的复杂度也会增加,拆分的越多越细,就需要一个人去维护更多的服务

渐进式的数据库一致性 由于微服务的替换传统服务不是一蹴而就的,很多时候偶都是同时存在新老系统的api和数据库,如何维持新老系统的一致性就成了问题,所以在探索微服务的过程中,要做到数据同步链路的保障,需要更多的维护成本

五、过往经验

使用情况

在过往的公司中,微服务架构被广泛应用于大型、复杂的项目中。通过将项目拆分成多个小服务,降低了开发难度和复杂度,提高了开发效率和灵活性。同时,每个服务都可以独立扩展,从而提高了整个系统的可扩展性。

拆分思路:纵向的技术通用面和横向的业务角度,技术通用可以将一些通用api、算法抽离出来,也可以从架构的角度将业务分为业务应用层、服务计算层、服务存储层等;横向的角度可以根据业务系统拆分为运单中心、订单中心、运营中心、算法中心等

技术特点

在过往公司的实践中,微服务架构的技术特点主要体现在以下几个方面

技术栈的多样性:每个微服务都可以独立选择技术栈、数据库和部署方式。这带来了技术的灵活性,但也增加了技术的复杂度。
通信机制的轻量级:微服务之间通过轻量级的通信机制(如API、消息队列等)进行交互,降低了服务之间的耦合度。
独立开发和部署:每个微服务都可以独立开发、测试、部署和扩展,提高了开发效率和灵活性。

总结

微服务架构是一种先进的架构模式,适用于大型、复杂的项目。它带来了很多好处,如降低开发难度和复杂度、提高系统的可扩展性和容错性等。但是,它也带来了一些挑战和复杂度,如服务划分难度、分布式复杂性、运维复杂度等。因此,在使用微服务架构时,需要仔细权衡其优缺点,并结合项目的实际情况进行选择。同时,需要不断学习和探索新的技术和方法,以应对微服务架构带来的挑战和复杂度。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微服务是一种架构风格,通过将应用程序拆分为多个小型、松散耦合的服务来实现。每个服务都独立运行,并通过轻量级的通信协议进行通信。这种架构风格使得每个服务可以独立开发、部署和扩展,从而提高系统的灵活性和可靠性。微服务的应用可以是分布式的,也可以是集群的。 分布式是指将一个应用程序拆分为多个独立的组件或模块,这些组件或模块可以在不同的服务器上运行,并通过网络进行通信。每个组件或模块都负责特定的功能,并相互协同工作以完成整个应用程序的任务。分布式应用程序的每个节点都可以独立部署和运行,如果其中一个节点崩溃,其他节点可以接替其工作。 集群是指将多台服务器组合在一起,通过负载均衡技术将请求分配给集群中的不同服务器来处理。集群的目的是提高系统的可用性和性能,当其中一个服务器出现故障时,其他服务器可以接替其工作,确保服务的持续可用性。集群可以部署相同的应用程序,也可以部署不同的应用程序。 因此,微服务、分布式和集群是三个不同的概念,但它们之间存在一定的联系。微服务是一种架构风格,可以应用于分布式环境和集群环境中,而分布式是一种将应用程序拆分为多个独立组件的方式,这些组件可以在不同的服务器上运行,而集群是一种将多台服务器组合在一起的方式,通过负载均衡技术实现高可用性和性能的提升。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [集群、微服务与分布式](https://blog.csdn.net/weixin_58473601/article/details/125342950)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [集群、分布式、微服务的区别和介绍](https://blog.csdn.net/demored/article/details/125599894)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值