`

微服务系统设计(元素)

 
阅读更多
以springboot框架来设计一个微服务系统,可以利用现有的springcloud微服务体系,可以大大节省开发人员的开发时间

springcloud解决的是企业开发过程中,会遇到的各种问题,节省企业效率。但这些框架对开发者的技术提升或对技术的理解来说并不是好事。这就相当于公司买了一些技术产品,然后开发的过程中,技术人员调用它们,要在以前这些技术产品都要技术人员开发,现在开发人员完全纯写业务。对技术有追求的人,对springcloud做到会用就行。

任务一门技术或框架的诞生都是围绕着企业开发遇到的问题而应用而生的,这可以技术人员看轻技术的一个原因。

以企业遇到的问题为例:

配置文件(配置中心)  - springcloud-config

服务治理(zookeep)   - springcloud-eureka

网关                - springcloud-zuul

客户端负载均衡(服务器端负载均衡)    - springcloud-ribbon(feign)


一直希望可以做些有挑战的项目,很多事情也是可遇不可求。






话外(如何保证消息队列的消息按顺序消费):
这里面涉及到2方面问题:
生产者按顺序;
消费者按顺序;


对于生产者按顺序:

在发送的消息上加标识,经过hashcode得到相同值,发送到固定的队列。对于kafka而言,即为partion。这样可以保证消息按顺序发送

这里会有一个问题,即发送A、B2个消息,发送A成功了,而发送B失败了。这种情况kafka是怎么解决的呢。
https://blog.csdn.net/thekenofDIS/article/details/79973589

即为:
在发送阻塞前对于每个连接,正在发送但是发送状态未知的最大消息数量。如果设置大于1,那么就有可能存在有发送失败的情况下,因为重试发送导致的消息乱序问题。
所以我们应该将其设置为1,保证在后一条消息发送前,前一条的消息状态已经是可知的。



还可以借鉴TCP发送消息的机制,多个发送的消息根据某些协议是一个整体,在消费端对消息进行校验,当接受到消息A时,根据协议计算出是否有后续消息

或者合并多个消息为一个消息,但这是消息设计耦合度或许有点低



对于消费段而言:
如何队列里面的消息是顺序是有序,那当然“消费”时候也是有序,这里的消费指的是接收消息的顺序,不能代表消息处理完成的顺序





整体而言:

按顺序消费的实质是处理的消息应该有先后顺序,有先后顺序的消息之间应该有某种关联性,例如有2个消息,(它们有相同的key值),A和B,随意发送到消费端,先持久化到数据库中,统计当此key的消息统计有2条值,说明2个消息都获取到了,然后再按顺序消费2个消息。

分享到:
评论

相关推荐

    微服务架构介绍.pdf

    它是软件系统的设计蓝图,指导开发者如何组织软件的结构和元素。架构师的职责包括定义规范、指导落地。架构不是一成不变的,它会随着业务需求和技术发展而演进。 架构的演进过程通常包含多个阶段,从早期的单块架构...

    互联网金融微服务架构设计.pptx

    它提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。ESB使用户可以不受限制地重复使用软件,把各种资源互连起来。 SOA和ESB的区别在于,SOA是一种方式或架构,用于具有自服务功能的应用程序,而ESB是...

    基于 Vue3、Typescript 框架开发的 Fish Cloud 微服务系统前端UI页面.zip

    总的来说,"基于 Vue3、Typescript 框架开发的 Fish Cloud 微服务系统前端UI页面"意味着该项目采用了现代前端技术栈,提供了强大的开发工具链和组件库,旨在构建高质量、可维护的微服务前端应用。开发者需要对Vue3、...

    基于DDD和微服务中台架构与实现

    【基于DDD和微服务的中台架构与实现】是一本深度探讨现代企业IT架构的书籍,作者欧创新和邓頔结合实践经验,阐述了如何利用领域驱动设计(DDD)和微服务架构构建灵活且高效的中台系统。以下是该书涉及的主要知识点:...

    时晖-异地多活单元化架构下的微服务体系41页.pdf

    异地多活单元化架构下的微服务体系是一种现代软件架构设计方式,它强调在不同的地理位置部署多个活动单元,从而实现高可用性和容灾能力。在微服务架构中,将大型应用拆分成小的、独立的服务,每个服务都围绕特定的...

    基于微服务的移动办公平台的设计与实现.pdf

    - 传统应用系统的一体化设计导致扩展困难,需要向微服务架构迁移。 - 开发、交付和运维分离,需要协调工作,增加了平台维护难度。 5. 基于微服务的移动办公平台设计 - 微服务框架设计理念强调敏捷开发、持续交付...

    微服务与领域驱动设计,架构实践总结.doc

    总的来说,微服务与领域驱动设计结合,旨在通过将业务逻辑和系统架构紧密匹配,解决软件复杂性问题。然而,实现这样的架构并非易事,需要团队拥有足够的业务洞察力、技术实力以及对敏捷开发原则的遵循。通过不断学习...

    spring cloud集成全渠道在线客服以及后台管理系统,所有微服务之间的消息传递采用区块链技术.zip

    描述中的“人工智能-项目实践-信息化管理-信息管理系统设计与开发”表明该项目不仅涉及传统的信息管理系统设计,还融入了人工智能元素。这意味着系统可能包含机器学习、自然语言处理或者智能推荐等AI技术,以提升...

    领域驱动微服务实践.pdf

    领域驱动设计(Domain-Driven Design, DDD)是一种软件开发方法,强调以业务领域为中心进行系统设计,将复杂的业务逻辑转化为可操作的模型。在微服务架构中,DDD被广泛应用于构建可扩展、高内聚、低耦合的服务。本...

    yudao cloud微服务架构.rar

    如果您在设计大型并发应用程序或者准备拆解之前的老系统时,我想你第一考虑的是微服务架构方式。 前面我们了解到微服务架构将应用程序构建为一系列松散耦合的服务,是为了通过实现持续交付和灵活部署来加速软件开发...

    基于qiankun+vue-elment-admin打造微服务使用说明v.1.01

    qiankun 是阿里开源的一个微前端解决方案,它允许我们在同一个浏览器窗口内运行多个独立的前端应用,而 vue-element-admin 是基于 Vue.js 和 Element UI 的后台管理系统模板,提供了丰富的功能和优雅的界面设计。...

    深入浅出微服务体系.rar

    10. **容错与弹性**:服务断路器模式(如Hystrix)和负载均衡(如NGINX、Envoy)是微服务架构中的关键元素,它们提供了故障隔离和恢复机制,增强了系统的弹性和可靠性。 11. **服务网格**:随着微服务数量的增长,...

    网络教育平台的系统设计报告与相关技术

    网络教育平台的系统设计报告与相关技术是一篇深入探讨在线教育技术领域的硕士论文。随着互联网技术的飞速发展,网络教育已经成为教育领域不可或缺的一部分,它为广大学习者提供了便捷、灵活的学习方式。这篇论文旨在...

    进行微服务治理,先要对微服务进行度量.docx

    幸运的是,存在一些自动化工具,它们可以自动提取源码元素,梳理元素间的关系,帮助我们“通过代码理解代码”,从而更高效地进行微服务治理。 在进行服务测试质量度量时,可以监控单元测试覆盖率、集成测试结果,...

    毕设&课程作业_智能运维系统后台-微服务实现.zip

    1. **项目文档**:包括需求分析、系统设计、架构图、流程图等,帮助理解和跟踪项目进展。 2. **服务代码**:每个微服务通常有独立的代码仓库,可能包括Java、Python、Go等语言实现的服务。 3. **配置文件**:如...

    面向对象系统设计.doc

    面向对象系统设计是一种现代软件开发方法,它基于对象和类的概念,强调代码的重用性、模块化和可维护性。在《面向对象系统设计》一书中,作者蒋能学详细介绍了面向对象设计的基本原理和实践技巧,并结合统一建模语言...

    在线考试平台(微服务)

    在线考试平台是一个基于微服务架构设计的现代教育技术解决方案,旨在提供灵活、高效且易于管理的在线测试环境。采用微服务架构,该平台将不同功能模块拆分为独立的服务,每个服务都可以独立部署和扩展,提高了系统的...

    大公司系统设计面试宝典

    【大公司系统设计面试宝典】是一份针对大型企业面试准备的重要资料,涵盖了诸如Twitter、Netflix、聊天系统、GFS以及MapReduce等热门系统的架构设计。这份文档旨在帮助面试者全面理解分布式系统的关键技术和设计原则...

Global site tag (gtag.js) - Google Analytics