微服务
文章平均质量分 92
微服务理论+实战以及遇到的问题
王二蛋!
个人网站:hicxy.cn
展开
-
采用微服务架构前,先问自己几个问题
前两年的市场绝对是微服务的天下,开发个什么系统,动不动就是微服务,几乎已经成为每个项目的标配。但是,真的所有项目都适合微服务架构吗?什么样的项目适合微服务架构?我拿两个案例对该问题进行说明。原创 2024-04-22 18:21:02 · 894 阅读 · 0 评论 -
基于 Zookeeper 实现服务注册和服务发现
无论是采用SOA还是微服务架构,都需要使用服务注册和服务发现组件。我刚开始接触 Dubbo 时一直对服务注册/发现以及 Zookeeper 的作用感到困惑,现在看来是因为对分布式系统的理解不够深入,对 Dubbo 和 Zookeeper 的工作原理不够清楚。本文将基于 Zookeeper 实现服务注册和服务发现功能,如果跟我一样有同样的困惑,希望可以通过本文了解其他组件如何使用 Zookeeper 作为注册中心的工作原理。原创 2023-09-04 07:00:00 · 3079 阅读 · 13 评论 -
分布式系统中的那些一致性(CAP、BASE、2PC、3PC、Paxos、ZAB、Raft)
工作过几年的同学,尤其是这几年,大家或多或少都参与过分布式系统的开发,遇到过各式各样“分布式”问题,而遇到这些问题去解决时就是我们对这个知识学习的过程。不知道大家是否跟我一样,每每搜索到“分布式”关键词,总会出现各种“分布式理论”,比如CAP、BASE理论、2PC、3PC 以及 Paxos、Raft、ZAB 算法,而这些貌似跟一致性都有一定的关系。在读过数次与之相关的不同文章后,每次都会有不一样的理解以及困惑,比如,CAP中的 C 怎么就强一致了?BASE 理论的定义怎么这么抽象?原创 2023-05-12 10:30:40 · 4164 阅读 · 9 评论 -
SpringBoot Starter 作用及原理
有没有在入行后直接基于 SpringBoot 开发项目,没有 spring、servlet 开发经历的,举个手😄。有没有用 SpringBoot 开发项目,但是第一次听说 Starter 或者听过却不知道是干嘛的,举个手😄。有没有知道 Starter 是干嘛的,但不知其原理的,举个手😄。有没有想了解 Starter 原理或想自己实现一个 Starter 提供别人使用的,举个手😄。如果有以上情况的,希望通过本文可以帮助你了解 Starter。原创 2023-04-20 17:20:24 · 6915 阅读 · 15 评论 -
限流算法(计数器、滑动时间窗口、漏斗、令牌)原理以及代码实现
什么是限流?限流 限流 就是限制流量。在高并发、高流量的场景中我们需要把限流做好,防止突发的流量、恶意的攻击等大量请求的冲击带来不必要的影响,保证业务系统的正常运行。如何限流?首先我们需要知道限流的基本思路,其次需要知道限流的几种实现方式(这里我们叫限流算法)。限流的基本思路就是在一个单位时间内流量超过某个阈值后被拒绝或限制。目前常见的限流算法有计数器(固定时间窗口)算法、滑动时间窗口算法、漏斗算法、令牌算法。原创 2023-04-14 16:57:50 · 4332 阅读 · 11 评论 -
分布式事务及解决方案
简单了解下什么是事务?用户定义的一系列数据库操作,这些操作可以视为一个完整的逻辑处理单元,要么全部执行,要么全部不执行。为保障事务是正确可靠的,事务具备4个特性:原子性(Atomicity):一个事务中的所有操作,要么全部完成,要么全部不完成。一致性(Consistency):在事务开始之前和事务结束之后,数据的完整性没有被破坏,比如;A和B共有200,A向B转账不管成功还是失败,总额还是200。隔离性(Isolation):防止多个事务并发执行时导致数据不一致。持久性(Durability):事务处理完成原创 2022-06-19 11:32:04 · 288 阅读 · 0 评论 -
SpringBoot整合Kafka简单配置实现生产消费
简单实现生产及消费,包括生产消费的配置说明、消费着offset自定义seek等原创 2022-12-05 18:18:52 · 3011 阅读 · 1 评论 -
SpringBoot整合RabbitMQ实现死信队列
消费者使用basic.reject或basic.nack(重新排队参数设置为false)对消息进行否定确认。消息到达生存时间还未被消费。队列超过长度限制,消息被丢弃。这些消息会被发送到死信交换机并路由到死信队列中(在RabbitMQ中死信交换机和死信队列就是普通的交换机和队列)。其流转过程如下图。原创 2022-12-14 17:14:19 · 2036 阅读 · 3 评论 -
SpringBoot解析指定Yaml配置文件
我们通常在SpringBoot项目中用配置文件属性时使用@ConfigurationProperties或@Value默认配置文件的属性值,也就是application.yml或者application.properties文件中的属性值。但是不能全都往默认配置文件里堆的,本文利用@PropertySource和@ConfigurationProperties注解引用其它配置文件的属性值。原创 2023-03-21 15:35:37 · 3759 阅读 · 15 评论 -
设计一个高流量高并发的系统需要关注哪些点
做好一个高流量高并发的系统,不论前端还是后端,过程中每一个步骤都是至关重要的。设计一个系统除了满足功能性,还要考虑兼容性、易用性、可靠性、安全性、可维护性、可移植性等软件质量。同时要对系统的吞吐量、并发数、平均响应时间等指标要完全掌握,在指标异常时可以快速做出决策避免一系列问题发生。原创 2023-03-28 15:37:57 · 1422 阅读 · 26 评论 -
SpringBoot集成Dubbo启用gRPC协议
Dubbo 在 2.7.5 版本开始支持原生 gRPC 协议,对于计划使用 HTTP/2 通信或者期望 gRPC 协议支持服务治理能力的,都可以考虑接入 Dubbo 体系启用 gRPC 协议。由于官网给的 代码示例 是基于 spring,现在基本上都是基于SpringBoot开发,所以本文提供一下 SpringBoot 的代码示例。此外还会简单说明 Dubbo 支持的原生 gRPC 协议与原生 gRPC 协议在代码开发时的区别。如果对gRPC协议不了解的,后续文章会有更新,请持续关注。原创 2023-04-12 11:21:30 · 2681 阅读 · 2 评论 -
Spring Cloud 集成Seata分布式事务(Seata+Nacos+OpenFeign)
Seata版本1.5.0 快速搭建Seata1.5.0版本直接是一个SpringBoot项目,下载后修改 文件中注册中心、配置中心、存储模式配置。原创 2023-02-10 15:23:37 · 6194 阅读 · 8 评论 -
Seata分布式事务模式(TA、TCC、XA、SAGA)工作机制
在当前的技术发展阶段,不存一个分布式事务处理机制可以完美满足所有场景的需求。一致性、可靠性、易用性、性能等诸多方面的系统设计约束,需要用不同的事务处理机制去满足。Seata 项目最核心的价值在于:构建一个全面解决分布式事务问题的 标准化 平台。基于 Seata,上层应用架构可以根据实际场景的需求,灵活选择合适的分布式事务解决方案。AT是无侵入的分布式事务解决方案,满足大部分分布式事务场景。TCC 模式是高性能分布式事务解决方案,适用于核心系统等对性能有很高要求的场景。原创 2023-02-02 18:05:03 · 6911 阅读 · 0 评论 -
Nacos服务注册与发现源码剖析
屏蔽、解耦服务之间相互依赖的细节。服务之间的远程调用必须要知道IP、端口信息,一旦这些信息改变,调用方都需要更新,依赖性太强。微服务架构中,服务众多、服务之间的相互依赖错综复杂,无论是服务停止、上线,还是扩容,都需要尽快通知调用方。注册中心作用就是对微服务进行动态配置,解决这一问题。Nacos作为注册中心其本质是作为服务端,提供接口进行客户端实例的注册存储实例信息,通过心跳机制保证实例的存活,实例通过服务端发现获取其他实例信息。本文通过Nacos源码了解服务注册与发现原理。原创 2023-01-17 17:55:43 · 1190 阅读 · 0 评论 -
Spring Cloud Alibaba学习指南
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。原创 2023-01-13 18:01:46 · 7330 阅读 · 18 评论 -
RestTemplet+Ribbon实现负载均衡源码分析
为什么加上@LoadBalanced,RestTemplate就有负载均衡的能力呢?原创 2023-01-08 11:01:57 · 1012 阅读 · 0 评论 -
Ribbon、Feign、Hystrix超时&重试&熔断问题
feign的总请求次数=(1 + maxAutoRetries ) * (1 + MaxAutoRetriesNextServer)Hystrix超时时间=(1 + maxAutoRetries ) * (1 + MaxAutoRetriesNextServer)✖️ReadTimeout原创 2023-01-06 18:29:03 · 7628 阅读 · 37 评论 -
Spring Cloud Netflix 全套组件入门到实战
Spring Cloud的诞生就是为了做分布式,它是一个生态,定义了一套标准,目前基于其落地实现的有:Spring Cloud Netflix、Spring Cloud Alibaba,二者都可以提供一套分布式解决方案,例如:众多服务统一管理,服务之间的通信,服务熔断降级、链路追踪等。Spring Cloud为我们提供的解决方案中包含很多组件,下面表格列出Spring Cloud生态常用组件以及其应用。Eureka作为注册中心,分为服务端和客户端,服务端提供客户端注册,客户端可以在服务端拉取注册表到本地(所原创 2023-01-06 15:28:30 · 6320 阅读 · 11 评论