微服务
文章平均质量分 81
微服务(或微服务架构)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。
CodingAnHour
明日复明日,明日何其多。我生待明日,万事成蹉跎。
展开
-
Seata分布式事物(四)解决RPC+feign跨服务调用提供者无XID无法回滚问题
事务传播Seata 全局事务的传播机制就是指事务上下文的传播,根本上,就是 XID 的应用运行时的传播方式。跨服务调用场景下的事务传播,本质上就是要把 XID 通过服务调用传递到服务提供方,并绑定到 RootContext 中去。只要能做到这点,理论上 Seata 可以支持任意的微服务框架。只要是同一个请求链路,可以将XID作为传输参数传递给服务提供者业务方法中获取XID,如下示例调用者@RequestMapping(value = "testDataApi")@GlobalTr原创 2021-04-16 23:38:07 · 2184 阅读 · 0 评论 -
Seata分布式事物(三)TCC事务模式执行机制
Seata的AT模式基本上能满足我们使用分布式事务80%的需求,但涉及不支持事务的数据库与中间件(如redis)等的操作,或AT模式暂未支持的数据库(目前AT支持Mysql、Oracle与PostgreSQL)、跨公司服务的调用、跨语言的应用调用或有手动控制整个二阶段提交过程的需求,则需要结合TCC模式。不仅如此,TCC模式还支持与AT模式混合使用。1、TCC模式的概念一个分布式的全局事务,整体是两阶段提交Try-[Comfirm/Cancel] 的模型。在Seata中,AT模式与TCC模式事实上都是两原创 2021-04-16 23:09:22 · 611 阅读 · 2 评论 -
Seata分布式事物(二)AT事物模式工作机制读隔离、写隔离
1、AT 模式的前提:1、基于支持本地 ACID 事务的关系型数据库;2、Java 应用,通过 JDBC 访问数据库;2、整体机制是两阶段提交协议的演变:一阶段:“业务数据”和“回滚日志”在一个本地事务中提交,释放本地锁(相当于数据库行锁)和连接资源;(本地事务,就已经在数据库持久化了)二阶段:如果没有异常:提交异步化,非常快速地完成;(正常情况,那就提交了,同步一下TC Server的状态,删除回滚日志)如果有异常:回滚通过一阶段的回滚日志进行反向补偿;(通过undo_log原创 2021-04-16 21:23:49 · 1494 阅读 · 0 评论 -
Seata分布式事物(一)基础信息介绍、docker部署SeataServer注册到nacos
1、什么是本地事物一般情况一个进程中操作一个数据库,属于本地事务@Transactional 是本地事务,在分布式系统,只能控制住自己的回滚,控制不了其它服务的回滚,所以,是有局限性的,如果方法里边需要调用其它服务的操作,则要使用分布式事务。1.1、数据库事务特性 ACID - A(Atomic):原子性,构成事务的所有操作,要么都执行完成,要么全部不执行,不可能出现部分成功部分失败的情况。- C(Consistency):一致性,在事务执行前后,数据库的一致性约束没有被破坏。比如:张三向李四原创 2021-04-08 23:36:07 · 361 阅读 · 0 评论 -
Skywalking-UI(三)界面说明
仪表盘全局控制栏服务实例信息端点拓扑图追踪性能剖析服务:需要分析的服务;端点:链路监控中端点的名称,可以在链路追踪中查看端点名称;监控时间:采集数据的开始时间;监控持续时间:监控采集多长时间;起始监控时间:多少秒后进行采集;监控间隔:多少秒采集一次;最大采集数:最大采集多少样本;...原创 2021-04-06 15:41:55 · 1995 阅读 · 0 评论 -
docker Skywalking(二)配置告警信息回调指定url、自定义链路跟踪、集成logback输出traceId日志
配置告警信息进入容器,操作如图vi alarm-settings.yml 编辑规则,修改回调方法。在docker容器中更推荐挂载此文件。规则说明# 警报规则rules: # 规则的唯一名称,必须以`_rule`结尾。 service_sla_rule:原创 2021-03-30 00:08:06 · 1833 阅读 · 0 评论 -
Skywalking分布式链路跟踪(一)原理、docker搭建oap-ES7.x存储、配置java测试项目
1、什么是SkywalkingSkywalking是一个可观察性分析平台和应用性能管理系统,分布式系统的应用性能监视工具,专门为微服务,云原生和基于容器(Docker,Kubernetes,Mesos)的体系结构而设计。跟踪,指标和日志记录多合一解决方案。支持Java、.NET Core、PHP、NodeJS、Golang、Lua、C++代理支持Istio + Envoy Service Mesh轻量级: 没有大数据栈、采用不同的规模模块化:存储可插拔、群集协调器可插拔、支持pull/push原创 2021-03-28 22:51:30 · 1912 阅读 · 10 评论 -
Spring Cloud Alibaba Sentinel 持久化数据到Nacos中配置json及SpringCloud代码集成
默认情况下sentinel dashboard中配置的规则是API 将规则推送至客户端并直接更新到内存中,扩展写数据源(WritableDataSource),当服务重启或者重新部署后,配置的规则需要重新配置,不保证一致性;规则保存在内存中,重启即消失。严重不建议用于生产环境持久化数据到nacos中(Push模式)生产环境下一般更常用的是 push 模式的数据源。对于 push 模式的数据源,如远程配置中心(ZooKeeper, Nacos, Apollo等等),推送的操作不应由 Sentinel 客户原创 2021-03-20 20:07:38 · 3308 阅读 · 17 评论 -
Spring Cloud Alibaba Sentinel(七)受权规则 黑白名单
1、受权规则 黑白名单官方地址很多时候,我们需要根据调用来源来判断该次请求是否允许放行,这时候可以使用 Sentinel 的来源访问控制(黑白名单控制)的功能。来源访问控制根据资源的请求来源(origin)限制资源是否通过,若配置白名单则只有请求来源位于白名单内时才可通过;若配置黑名单则请求来源位于黑名单时不通过,其余的请求通过。调用方信息通过 ContextUtil.enter(resourceName, origin) 方法中的 origin 参数传入。白名单:白名单内可以访问黑原创 2021-03-20 12:53:25 · 1294 阅读 · 0 评论 -
Spring Cloud Alibaba Sentinel(六)系统规则
系统自适应限流官网地址Sentinel 系统自适应限流从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。背景系统保护的目的:保证系统不被拖垮在系统稳定的前提下,保持系统的吞吐量长期以来,系统保护的思路是根据硬指标,即系统的负载 (load1) 来做系统过载保护。当系统负载高于某个阈原创 2021-03-19 22:11:32 · 171 阅读 · 0 评论 -
Spring Cloud Alibaba Sentinel(五)热点参数限流及SpringCloud代码集成
1、什么是热点参数热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。比如:商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。Sentinel 利用 LRU(最近最少使用,原创 2021-03-19 01:46:56 · 441 阅读 · 0 评论 -
Spring Cloud Alibaba Sentinel 1.8.0(四)服务降级
除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的时候,可能需要远程调用银联提供的 API;查询某个商品的价格,可能需要进行数据库查询。然而,这个被依赖服务的稳定性是不能保证的。如果依赖的服务出现了不稳定的情况,请求的响应时间变长,那么调用服务的方法的响应时间也会变长,线程会产生堆积,最终可能耗尽业务自身的线程池,服务本身也变得不可用。现代微服务架构都是分布式的,由非常多的原创 2021-03-18 18:01:11 · 572 阅读 · 2 评论 -
Spring Cloud Alibaba Sentinel(三)流控规则
流量控制(flow control),其原理是监控应用流量的 QPS 或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。QPS :每秒查询率(Query Per Second)资源名:一般是我们的请求路径;针对来源:来自于哪个应用,default,代表不区分调用来源;阈值类型:分为QPS或线程数;当 QPS 超过某个阈值的时候,则采取措施进行流量控制。流量控制的效果包括以下几种:直接拒绝、Warm Up、匀速排队并发数原创 2021-03-17 17:37:14 · 389 阅读 · 1 评论 -
Spring Cloud Alibaba Sentinel(二)自定义熔断异常类
Sentinel默认返回 Blocked by Sentinel (flow limiting),状态码419sentinel官网地址下载源码如果github下载不下来可以到我上传的资源上下载源码中 Sentinel-master\sentinel-adapter\sentinel-spring-webmvc-adapter\src\main\java\com\alibaba\csp\sentinel\adapter\spring\webmvc\callback\DefaultBlockExcep原创 2021-03-17 10:36:51 · 1080 阅读 · 5 评论 -
Spring Cloud Alibaba Sentinel(一)简介、docker部署sentinel dashboard、项目配置
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。原创 2021-03-14 23:02:03 · 4643 阅读 · 0 评论 -
docker Kubernetes 部署nacos1.4.1并配置数据源
常用参数及官网地址官网地址常用的参数,namedescriptionoptionMODEcluster模式/standalone模式cluster/standalone default clusterNACOS_SERVERSnacos cluster地址(MODE =cluster 时配置其他nacos服务的地址)eg. ip1,ip2,ip3PREFER_HOST_MODE是否支持hostnamehostname/ip default ipNAC原创 2021-03-09 14:09:01 · 1329 阅读 · 0 评论 -
Spring Cloud Gateway(三)集成sentinal、跨域处理
1、集成sentinal1、添加依赖,依赖跟所使用的sentinal版本一致即可<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-spring-cloud-gateway-adapter</artifactId> <version>1.8.0</version></dependency>2、配置ya原创 2021-03-27 15:36:41 · 659 阅读 · 0 评论 -
Spring Cloud Gateway(二)自定义谓词、过滤器、全局过滤器
1、请求流程1.客户端向Spring Cloud Gateway发出请求。2.网关处理程序映射确定请求与路由匹配3.过滤器过滤请求。4.服务端处理请求5.过滤器处理响应请求6.网关路由处理响应请求7.响应到客户端2、自定义谓词例如:自定义谓词CustomPredicate:有2个参数点击配置文件中“routes”进入RouteDefinition后进入PredicateDefinition类中,查看当前包下AbstractRoutePredicateFactory接口的层原创 2021-03-27 00:12:29 · 465 阅读 · 0 评论 -
Spring Cloud Gateway(一)为什么用网关、能做什么、为什么选择Gateway、谓词工厂、过滤器配置
1、为什么用网关?能做什么?为什么选择Gateway?1.1、为什么用网关网关api:封装了系统内部架构,为每个客户端提供一个定制的 API。在微服务架构中,服务网关的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。1.2、能做什么服务网关在完成客户端与服务器端报文格式转换的同时,它可能还具有身份验证、监控、缓存、请求管理、静态响应处理等功能。另一方面,也可以在网关层制定灵活的路由策略。针对一些特定的 API,我们需要设置白名单、路由规则等各类限制Spr原创 2021-03-25 20:37:06 · 5495 阅读 · 0 评论 -
Spring Cloud Config配置中心
一、为什么需要分布式配置中心传统配置方式:配置信息分散到系统各个角落方式,配置文件或者在代码中;集中式配置中心:将应用系统中对配置信息的管理作为一个新的应用功能模块,进行集中统一管理,并且提供额外功能;分布式配置中心:在分布式、微服务架构中,独立的配置中心服务;在分布式微服务体系中,服务的数量以及配置信息日益增多,比如各种服务器参数配置、各种数据库访问参数配置、各种环境下配置信息的不同、配置信息修改之后实时生效等等,传统的配置文件方式或者将配置信息存放于数据库中的方式已无法满足开发人原创 2021-02-26 15:03:05 · 166 阅读 · 2 评论 -
Spring Cloud Stream消息中间件通过RabbitMQ实现消息推送
一、Spring Cloud Stream是什么Spring Cloud Stream 是一个构建消息驱动微服务的框架。Spring Cloud Stream解决了开发人员无感知的使用消息中间件的问题,因为Spring Cloud Stream对消息中间件的进一步封装,可以做到代码层面对消息中间件的无感知,甚至于动态的切换中间件(rabbitmq切换为kafka等),使得微服务开发的高度解耦,服务可以关注更多自己的业务流程;不需要自己写配置类,直接在配置文件中配置关键信息即可支持的消息中间件官网原创 2021-03-02 00:06:19 · 2548 阅读 · 8 评论 -
Spring Cloud Zuul
一、zuul是什么Zuul是spring cloud中的微服务网关。网关: 是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由,定位到具体的服务节点上。Zuul是一个微服务网关,首先是一个微服务。也是会在Eureka、nacos等注册中心中进行服务的注册和发现。也是一个网关,请求应该通过Zuul来进行路由。Zuul网关不是必要的。是推荐使用的。使用Zuul,一般在微服务数量较多(多于10个)的时候推荐使用,对服务的管理有严格要求的时候推荐使用,当微服务权限要求原创 2021-02-24 14:20:38 · 308 阅读 · 0 评论 -
SpringCloud-Hystrix
熔断器当某个服务发生故障之后,通过熔断的故障监控,向调用方返回一个服务预期的,可处理的备选响应,而不是长时间的等待或抛出调用方法无法处理异常,这样保证了服务调用方的线程不会被长时间占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩,称之为服务降级。该框架的目标在与通过控制访问远程系统,服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力程序bug,数据不匹配,响应时间过长,服务不可用等等,都可能导致服务雪崩熔断降级`某个微服务响应时间过长,发送异常,或者不可用了,我们不能把错误错信返回回来原创 2021-02-23 15:15:27 · 269 阅读 · 0 评论 -
什么是微服务、微服务解决的问题是什么
微服务解决的问题服务治理:为了有效管理分布式系统中存在的大量服务实例,微服务架构引入了服务发现和服务注册机制,使得服务实例的管理变得自动化、透明化。Eureka、nacos等API 网关:为了降低服务客户端与服务提供者之间的耦合度,更好地简化调用过程,微服务架构专门提供了一个 API 网关,用来优化面向客户端的 API 设计。OpenResty、Kong、Zuul2、SpringCloudGateway 等服务容错:为了解决服务访问出错问题,微服务架构中提供了服务隔离、服务熔原创 2020-12-31 13:29:32 · 2524 阅读 · 3 评论