编程小知识
文章平均质量分 77
记录一些遇到的小东西
松鼠不是鼠
这个作者很懒,什么都没留下…
展开
-
Spring Cloud Alibaba(Seata分布式事务)
概况单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证,但是全局的数据一致性问题没办法保证。通俗的讲就是,一次业务操作跨多个数据源或需要多个系统进行远程调用,就会产生分布式事务问题。而Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。官网:传送门分布式事务过程:Transaction ID(XID):全局唯一的事务ID。Trans原创 2021-02-27 19:59:45 · 262 阅读 · 0 评论 -
Spring Cloud Alibaba(Sentinel熔断与限流)
概况官网:传送门中文:传送门主要特性:安装下载:传送门核心:**核心库(Java客户端):**不依赖任何框架/库,能够运行于所有Java运行时环境,同事对Dubbo/Spring Cloud等框架也有较好的支持。**控制台(Dashboard):**基于Spring Boot开发,打包后可以直接运行,不需要额外的Tomcat等应用容器。运行:java -jar sentinel-dashboard-1.7.0.jar登录Sentinel管理界面:http://localhost:808原创 2021-02-25 17:09:32 · 202 阅读 · 0 评论 -
Spring Cloud Alibaba(Nacos服务注册和配置中心)
简介一个更易于构建原生应用的动态服务发现、配置管理和服务管理平台。Nacos就是注册中心和配置中心的组合,等价于Eureka+Config+Bus官网:传送门官方文档:传送门、传送门通过官网下载后,进入安装目录的startup.cmd执行即可启动。通过访问http://localhost:8848/nacos即可,默认账号密码都是nacos注册中心配置Maven配置<!--SpringCloud ailibaba nacos --> <dependency原创 2021-02-25 14:37:45 · 255 阅读 · 1 评论 -
Spring Cloud微服务笔记十(Sleuth链路跟踪)
概况在微服务框架中,一个客户端发的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前端请求都会形成一个复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。官网:传送门搭建使用下载:Spring Cloud从F版已不需要自己搭建ZipkinServer了,只需要调用jar包即可,传送门运行Zipkinjava -jar zipkin-server-2.12.9-exec.jar访问:http://localhost:9411/zip原创 2021-02-24 15:47:51 · 116 阅读 · 0 评论 -
Spring Cloud微服务笔记九(Stream消息驱动)
概况官方定义Spring Cloud Stream是一个构建消息驱动微服务的框架。应用程序通过inputs或者outputs来与Spring Cloud Stream中的binder对象交互。通过我们配置来binding(绑定),而Spring Cloud Stream的binder对象负责与消息中间件交互,所以,我们只需要搞清楚如何与Spring Cloud Stream交互就可以方便使用消息驱动的方式。通过使用Spring Intergration来连接消息代理中间件以实现消息事件驱动。Spri原创 2021-02-24 15:27:32 · 156 阅读 · 0 评论 -
Spring Cloud微服务笔记八(Bus消息总线)
概况Spring Cloud Bus配合Spring Cloud Config使用可以实现配置的动态刷新Spring Cloud Bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了Java的事件处理机制和消息中间件的功能。Spring Cloud Bus目前支持RabbitMQ和Kafka。Spring Cloud Bus能管理和传播分布式系统间的消息,就像分布式执行器,可以用于广播状态更改、时间推送等,也可以当做微服务间的通信通道。在微服务框架的系统中,通常会使用轻量级的消原创 2021-02-23 15:32:18 · 207 阅读 · 0 评论 -
Spring Cloud微服务笔记七(Config配置中心)
概况Spring Cloud Config为微服务架构中的微服务提供集中化的外部部署支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。Spring Cloud Config分为服务端和客户端两部分,服务端也称为分布式配置中心,他是一个独立的微服务应用,用来连接配置服务器应为客户端提供获取配置信息,加密/解密信息等访问接口。客户端则是通过指定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载信息配置服务器,默认采用git来存储配置信息,这样就有原创 2021-02-23 14:54:32 · 92 阅读 · 0 评论 -
Spring Cloud微服务笔记七(Gateway网关)
概述在Spring Cloud微服务中有一个很重要的组件就是网关,在开始的1.x版本中都是采用的Zuul网关,但在2.x版本中,由于Zuul的跳票,Spring Cloud自己研发了Zuul的替代版,也就是Gateway。Gateway是在Spring 生态系统之上构建的API网关,旨在提供一种简单而有效的方式来对API进行路由,目标是提供统一的路由方式,且基于Filter链的方式提供了网关的基本功能,例如:安全、监控/指标和限流。官网地址:传送门**作用:**反向代理、权健、流量控制、熔断、日志监原创 2021-02-23 11:00:52 · 228 阅读 · 0 评论 -
Spring Cloud微服务笔记六(Hystrix熔断器)
分布式系统问题往往分布式系统结构中的应用程序,互相存在一定的依赖关系,每个依赖之间在某些情况将不可避免的失败,容易造成系统的崩溃。服务雪崩多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用了其他的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的响应时间过长或者不可用,对位服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。对于高流浪的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源在几秒钟内饱和。比失败更糟糕的是,这些应原创 2021-02-22 16:59:10 · 221 阅读 · 0 评论 -
Spring Cloud微服务笔记六(OpenFeign接口调用)
概况Feign是一个生命是WebService客户端。使用Feign能让编写的WebService客户端更加简单,他的使用方法是==定义一个服务接口,然后在上面添加注解,==Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters,Feign可以与Eureka和Ribbon组合使用以支持负载均衡。Feign旨在使编写Java Http客户端变得更容易,在使用Ribbon+RestTempl原创 2021-02-22 11:23:03 · 135 阅读 · 0 评论 -
Spring Cloud微服务笔记五(Ribbbbon负载均衡)
概述Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡工具。简单地说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项,如连接超时,重试等,也就是在配置文件中列出Load Balance(简称LB)后面所有的机器,Ribbon会自动的帮助你基于规则(轮询、随机等)去连接及其。相对容易的使用Ribbon实现自定义的负载均衡算法。Ribbon与Nginx的区别Nginx原创 2021-02-20 17:28:57 · 157 阅读 · 0 评论 -
Spring Cloud微服务笔记四(注册中心小结)
CAP理论C(Consistency):强一致性A(Availability):可用性P(Parttition):分区容错性核心:一个分布式系统不可能同时满足一致性、可用性、分区容错性三个需求,因此,根据CAP原理将NoSql数据库分成了满足CA原则、满足CP原则和满足AP原则的三大类;CA:单点集群,满足一致性,可用性系统,通常在可扩属性上不太强大。CP:满足一致性,分区容错性的系统,通常性能不是特别高。AP:满足可用性,分区容错性的系统,通常对一致性要求低一些。注册中心语言C原创 2021-02-20 16:10:07 · 100 阅读 · 0 评论 -
Spring Cloud微服务笔记三(Consul)
概况Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用G哦语言开发。提供了微服务系统中的服务之力、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用构建全方位的服务网络,总之Consul提供了一种完整的服务网格解决方案。有点包括:基于raft协议,比较简洁;支持健康检查,同事支持HTTP和DNS协议,支持跨数据中心的WAN集群,提供图形界面,跨平台,支持Linux、Mac、Windows功能服务发现:提供HTTP和DNS两种方式健康检原创 2021-02-20 15:56:58 · 97 阅读 · 0 评论 -
Spring Cloud微服务笔记二(Zookeeper)
概况ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。安装与部署自行百度,参考别的文档。依赖包: <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>z原创 2021-02-20 15:15:33 · 96 阅读 · 0 评论 -
Spring Cloud微服务笔记二(Eureka)
基础知识服务注册Eureka采用了CS的设计框架,Eureka Server作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用Eureka客户端连接到Eureka Server并维持信条连接。这样系统的维护人员可以通过Eureka Server来监控系统中各个微服务是否正常运行。在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息,比如服务地址,通讯地址等以别名的方式注册到注册中兴上。另一方的消费者或服务提供者以该别名的方式去注册中心上获取到市级的服务通原创 2021-02-20 14:38:32 · 101 阅读 · 0 评论 -
Spring Cloud微服务笔记一
Spring Boot与Spring Cloud版本依赖查看地址官网查看地址:https://spring.io/projects/spring-cloud#overview更加详细的擦看地址:https://start.spring.io/actuator/info服务架构目前主流的服务架构为以下部分,根据不同情况具体采用:服务注册中兴:Eureka、Zookeeper、Consul、Nacos;服务调用(方式):Ribbon、LoadoadBalancer;服务调用 :Feign、Op原创 2021-02-20 10:30:41 · 115 阅读 · 1 评论 -
CAS解析与用法以及ABA问题
性质:CAS全称CompareAndSwap,意为比较并交换,Compare(比较),Swap(交换)。这里涉及到JMM(Java内存模型),变量等信息都是存储在主内存中,而对变量进行操作的过程是在工作内存中进行的,所以进行操作的时候会先将主内存中的拷贝到工作内存中。这里的CAS指的就是在工作内存中,在操作修改之前保存一个快照(原值),修改完以后进行写回到主内存中,在此过程中会将刚刚在工作内存中保存的快照与主内存中的值进行比较(Compare),如果一致,则代表数据没有被修改,进行交换(Swap原创 2020-07-20 11:44:22 · 216 阅读 · 0 评论