聊聊单体服务VS微服务系统

简介: 聊聊单体服务VS微服务系统

简介:单体服务和微服务系统的优缺点

1、为什么从单体服务到微服务转移

①、最核心的原因是单体服务出现性能瓶颈,如日访问量只有几十万的服务在单体服务可以支持。

②、服务故障隔离:当只有单个应用对外提供服务的时候,这个时候如果 服务挂的话,这时整个应用就提供不了服务了。而在互联网中是要保证高可用(99.99%的时间理念能够对外提供功能)

2、微服务的缺点:

①、增加了整个方案的复杂度:如果系统的日访问量没有达到几十万的话是不需要用微服务的

    将系统的整合点推移到了服务之间的接口,因此这些服务的接口需要进行良好的定义,在系统中也要对服务级别达成一致,并且还需要定义其他的非功能需求。

②、数据一致性问题:分布式事务难题

     原本采用一体性应用程序架构的系统被分解为多个小型服务时,在原本的一体性架构中集中保存在某处的数据,在新的微服务应用中经常会改为保存在多个地方,这种改变可能会带来维护数据一致性的挑战。
③、网络延迟-服务之间互调存在一定的延迟 ,因为服务会部署在不同的机器上

④、增加开发复杂度

      接口调用增加够通成本,要求软实力的要求比传统项目的要高一些(WIKI文档)

      重复劳动

3、基于微服务的技术选型

①、微服务下的全家桶选择

②、微服务框架主体springBoot与springMVC

      SpringMVC提供了一种轻度耦合的方式来开发web应用,而spring只是一种分层的应用框架,IOC和AOP的一个应用层的框架,主要做了切面和bean的依赖管理。

      SpringBoot实现了自动配置,降低了项目搭建的复杂度

           独立运行的Spring项目

            提供starter简化maven配置

            免XML复杂而冗余的设计思想

③、RPC调用Dubbo与SpringCloud

      网络协议支持

             SpringCloud  使用Http协议的REST API,HTTP还要建立连接所以比较麻烦。

             Dubbo支持各种通信协议(部分采用epoll的通信协议性能更高):对应的性能可能会高点

④、组件运行流程

           SpringCloud,统一通过API网关Zuul,注册中心(Eureka),Ribbon进行负载均衡,微服务之间通过fegin进行通信处理业务

           提供Gateway网关,Gateway通过Dubbo提供的负载均衡 机制自动完成,服务注册在ZK上面,配置中心可以用阿里的diamond。

⑤、持久层选择Mysql和Redis

⑥、本地持久化选择LoadingCache

⑦、消息中间件 选择阿里系RocketMQ

      RocketMQ的消息写入内存后即返回ACK,由单独的线程专门做刷盘的操作,所有的消息均是顺序写文件。

      在阿里集团被广泛应用于交易,充值,流计算,消息推送 ,日志流式处理,binglog分发等重要场景。

相关文章
|
2月前
|
监控 持续交付 API
深入理解微服务架构:构建高效、可扩展的系统
【10月更文挑战第14天】深入理解微服务架构:构建高效、可扩展的系统
97 0
|
4月前
|
Kubernetes 负载均衡 微服务
Kubernetes 生态系统中的微服务治理
【8月更文第29天】随着微服务架构的普及,管理分布式系统的复杂性也随之增加。Kubernetes 作为容器编排的事实标准,为微服务架构提供了强大的支持。结合像 Istio 这样的服务网格工具,Kubernetes 能够有效地解决微服务治理中的诸多挑战,如服务发现、负载均衡、流量管理和安全策略等。
65 1
|
4月前
|
Java UED Sentinel
微服务守护神:Spring Cloud Sentinel,让你的系统在流量洪峰中稳如磐石!
【8月更文挑战第29天】Spring Cloud Sentinel结合了阿里巴巴Sentinel的流控、降级、熔断和热点规则等特性,为微服务架构下的应用提供了一套完整的流量控制解决方案。它能够有效应对突发流量,保护服务稳定性,避免雪崩效应,确保系统在高并发下健康运行。通过简单的配置和注解即可实现高效流量控制,适用于高并发场景、依赖服务不稳定及资源保护等多种情况,显著提升系统健壮性和用户体验。
97 1
|
2天前
|
监控 Java 数据中心
微服务架构系统稳定性的神器-Hystrix
Hystrix是由Netflix开源的库,主要用于微服务架构中的熔断器模式,防止服务调用失败引发级联故障。它通过监控服务调用的成功和失败率,在失败率达到阈值时触发熔断,阻止后续调用,保护系统稳定。Hystrix具备熔断器、资源隔离、降级机制和实时监控等功能,提升系统的容错性和稳定性。然而,Hystrix也存在性能开销、配置复杂等局限,并已于2018年进入维护模式。
11 0
|
26天前
|
Dubbo Cloud Native 应用服务中间件
阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。
在云原生时代,微服务架构成为主流。阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。示例代码展示了如何在项目中实现两者的整合,通过 Nacos 动态调整服务状态和配置,适应多变的业务需求。
37 2
|
23天前
|
监控 持续交付 API
深入理解微服务架构:构建高效、可扩展的系统
深入理解微服务架构:构建高效、可扩展的系统
35 0
|
29天前
|
监控 测试技术 持续交付
深入理解微服务架构:构建高效、可扩展的系统
深入理解微服务架构:构建高效、可扩展的系统
45 0
|
3月前
|
缓存 Java 开发者
开发故事:一个 @Async 如何搞瘫整个微服务系统
大家好,我是小米,一个热爱分享技术的29岁开发者。本文讲述了一个困扰我们团队的开发环境问题,最终发现罪魁祸首竟是 `@Async` 注解。我们通过详细分析错误日志和 Spring 的 Bean 代理机制,逐步排查并解决了这一难题。文章介绍了三种解决方案:调整依赖结构、使用 `@Lazy` 延迟加载以及禁用 `@Async` 的代理功能。希望对你有所帮助!欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
36 5
开发故事:一个 @Async 如何搞瘫整个微服务系统
|
3月前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
229 3
|
4月前
|
存储 API 持续交付
探索微服务架构:构建灵活、可扩展的后端系统
【8月更文挑战第25天】 本文将引导您理解微服务架构的核心概念,探讨其对现代后端系统设计的影响。我们将从基础讲起,逐步深入到微服务的高级应用,旨在启发读者思考如何利用微服务原则优化后端开发实践。
53 4
下一篇
DataWorks