微服务
文章平均质量分 73
微服务架构
Minor王智
好好学习,天天向上!
展开
-
Skywalking入门
Skywalking是国产开源并且加入了Apache的一个分布式链路追踪框架,为分布式应用程序提供性能监控、链路追踪、可视化等服务。常见的链路追踪框架还有SpringCloudZipkin、Pinpoint、CAT等。skywalking的优势是利用了Java的Agent探针技术使得效率十分高。Skywalking通过探针技术来监控应用数据。并且支持多种语言的探针技术,例如Java、.Net、NodeJs等,并且提供了UI可视化平台,操作上手难度低。...原创 2022-07-30 11:27:09 · 420 阅读 · 0 评论 -
Sentinel入门
Sentinel组件和其它微服务组件一样,SpringBoot只需要引入一个sentinel的starter即可。Sentinel提供了一个可视化的UI控制台界面,在上面可以直观的看到微服务的状态和配置信息。Sentinel是阿里开源的一款分布式服务流控组件,主要以流量为切入点,从限流、流量塑形、熔断降级、负载保护、热点防护等多个维度来进行服务的稳定性保障。在分布式环境下,多个服务之间会存在频繁的依赖调用,在流量洪峰面前可能会造成某一个节点的资源耗尽或者是由于调用链依赖关系导致全链路发生故障、不可用。...原创 2022-07-29 21:46:31 · 359 阅读 · 0 评论 -
Gateway入门
一般情况下我们习惯用GlobalFilter,覆盖它的filter方法来实现请求的自定义操作,例如日志、认证授权、添加Header等操作。SpringCloud推出的一款基于WebFlux+Netty的Reactor响应式编程网关组件,性能相当于Zuul的一倍多。网关在分布式微服务架构中可以做很多事情流控、日志监控、统一认证权限校验等。Gateway的过滤器支持Pre前置处理和Post后置处理两种模式,我们也可以实现Filter接口来自定义Gateway的过滤器,通过Order接口可以实现过滤器排序。...原创 2022-07-28 11:05:19 · 891 阅读 · 0 评论 -
MySQL高可用和主从同步
Manager节点一般是独立部署一台机器,Node节点一般是部署在每台MySQL机器上的,Node节点通过解析MySQL的日志来进行工作。MySQL主从集群默认采用的就是异步复制方式,Master的事务提交后,写入binlog然后就给客户端返回成功的响应了。相比于异步复制,半同步复制就是说事务的提交后binlog要保证至少将数据同步给一个从库才算完成,但是半同步复制并不保证从库对数据的提交是否成功。日志上的,通过对Binlog的实时同步来实现主从数据的同步。常见的分库分表手段有客户端插件、数据库代理。...原创 2022-07-27 23:06:13 · 755 阅读 · 0 评论 -
分布式事务和Seata的AT模式原理
Try-Confirm-Cancel,本质也是业务服务化的两阶段提交协议,TCC一共有3个步骤,第一阶段需要由应用程序来进行对资源的预留,当所有参与者的try接口都成功了,那么事务管理器就会提交事务进行confirm,否则进行cancel回滚资源释放。Seata支持多种分布式事务模式,官方主推的是AT模式,AT模式是一种无侵入式的、类似于自动化的隐式TCC模式。2PC一共有2个阶段预提交和commit。在分布式系统架构中,复杂的业务需要跨库操作,要保证全局的事务一致性问题就得需要解决分布式事务问题。...原创 2022-07-25 13:56:10 · 358 阅读 · 0 评论 -
OAuth2和JWT
这种模式需要客户端、服务端、三方服务器共同协调完成,这种模式需要三方应用客户端通过授权得到一个Code码,客户端拿着这个code请求自己公司的服务端,服务器通过code去三方应用获取一个Access_Token,得到三方的Access_Token以后,服务器就可以调用API获取用户的一些非敏感信息了,例如可以拿到用户的头像、用户名、账号ID、open_id、union_id等。目前主流的版本是OAuth2。这种模式抛弃了用户的概念,客户端以自己的名义发起授权请求,这种模式适用于命令行的一些基础应用。...原创 2022-07-25 13:53:35 · 1730 阅读 · 0 评论 -
SpringBoot启动流程简要
SpringBoot启动流程简要。原创 2022-07-24 19:02:55 · 1883 阅读 · 0 评论 -
SpringBoot自动装配原理@EnableAutoConfiguration
1.命名规范问题,官方的starter一般命名风格是`spring-boot-starter-xxx`,我们自定义的一般换一个写法更好容易区分。1.POM中引入spring-boot-configuration-processor,以便提供配置文件处理功能提示。1.编写自己satrter的service逻辑等。...原创 2022-07-24 19:01:53 · 517 阅读 · 0 评论 -
SpringCloud Ribbon
通过实现IRule接口可以自定义负载策略,主要的选择服务逻辑在choose方法中实现。原创 2022-07-23 17:53:50 · 205 阅读 · 0 评论 -
Nacos
微服务架构是由单体架构向SOA服务化架构之后提出的一种去中心化、服务化的架构模式。微服务的特点是业务边界划分明确、独立的部署、服务之间通过RPC进行通信。我们将Namespace作为隔离开发、生成环境的标准,groupId作为隔离项目,dataId就是我们具体的配置了。Nacos除了可以作为注册中心以外,还可以作为配置中心,我们公司现在也在用Nacos作为配置管理中心,Nacos提供了服务发现与路由、健康检查、配置中心、动态DNS服务等。...原创 2022-07-23 17:51:56 · 259 阅读 · 0 评论 -
Spring事务@Transactional注解原理
这个注解的作用不言而喻,就是开启Spring对事务管理的支持。和其他的Enable注解类似,他的底层原理就是通过ImportSelector接口向IOC容器中放入了2个Bean:1.1 AutoProxyRegistrar(AOP的支持)这个Bean的作用就是向IOC容器中注册了一个的实现类,这个抽象类就是AOP的核心实现。所以这个Bean说白了也就是,在Spring Bean初始化后会进行对Advisor的寻找,然后判断当前Bean是否需要进行AOP并且是否有符合的切点,然后进行AOP的操作。这也是一原创 2022-07-12 16:40:11 · 1003 阅读 · 0 评论 -
Spring AOP原理
基于Proxy类的#newInstance( )方法来获取目标对象的代理对象,JDK的动态代理必须实现,因为Java语言不支持多继承,但是支持多实现。实现机制:2.Cglib动态代理Cglib是一个第三方代码生成库,是对ASM字节码技术的二次封装,在运行时动态生成代理对象,它的特点是基于子类继承的关系来实现。特点:基于子类的继承、无法对final修饰的类和方法进行代理、效率高、额外引入Jar包。实现机制:3.ASM字节码技术ASM是一个操纵字节码的工具框架,ASM可以直接生成二进制的class原创 2022-07-12 16:36:38 · 278 阅读 · 0 评论 -
浅谈一下Spring构造推断
这种场景,Spring很好处理,直接通过无参构造实例化得到Bean对象即可。Spring别无选择,只能使用这个构造作为实例化的选择。原创 2022-07-12 16:31:05 · 140 阅读 · 0 评论 -
Spring循环依赖问题和三级缓存
Spring默认是支持的,不过也可以通过容器设置关闭。Spring的循环依赖是基于三级缓存的三个Map来完成的,三个Map各自有各自的作用。传统的循环依赖,不依靠外力干扰肯定是不能实现的,需要一些Map进行实例化过程中的外力干扰。Spring提出了的概念,其实就是3个Map:3.1 循环依赖的解决流程A在实例化过程中,会提前将暴露出来,这个Lamda表达式有可能用不上,也有可能用得上。将这个Lamda表达式缓存在三级缓存这个Map中。如果发生了循环依赖,B在获取A的时候,先去一级缓存拿,拿不到就去二级原创 2022-07-12 16:28:32 · 287 阅读 · 0 评论 -
Spring依赖注入主流程
在XML配置的形式下,在标签中可以手动注入属性的ref引用关系或者指定构造的注入,称之为手动注入的形式(set注入、构造注入)。在标签中可以配置的自动注入方式是byType还是byName还是构造等,在创建Bean的过程中Spring将这个类的所有方法解析出来通过一定的规则进行筛选(例如set方法)然后进行属性注入。它是byType和byName的结合,注解可以使用在:3.2 寻找注入点(postProcessor机制实现)在Bean的实例化阶段时,Spring利用拓展机制调用方法来对Autowired原创 2022-07-12 16:26:36 · 483 阅读 · 0 评论 -
简单梳理下SpringBean生命周期
1.通过ResourcePatternResolve扫描指定包路径下的所有文件。2.每一个class文件在Spring中都抽象成Resource对象。1.利用MetadataReaderFactory解析Resource对象得到MetadatarReader对象。2.解析过程采用的是ASM字节码技术,没有加载类。1.MetadataReader拥有类的所有信息,通过判断类上是否带有@Conditional注解来筛选。2.如果类上有条件注解,或者有excludeFilters等过滤表达式,则匹配的类就直原创 2022-07-12 16:21:44 · 277 阅读 · 0 评论