
微服务
文章平均质量分 71
一丝轻风࿐ེ
坚持是一种伟大的力量
展开
-
SpringBoot application.properties 详解
springboot application.properties原创 2022-09-20 20:59:43 · 8155 阅读 · 0 评论 -
SpringBoot中的延迟加载
延迟加载原创 2022-06-09 17:22:20 · 3280 阅读 · 3 评论 -
SpringBoot重启后,第一次请求接口请求慢的解决方案
1、DispatcherServlet默认是懒加载,即工程启动的时候,Applicationcontext会将所有的bean加载到容器,但是DispatcherServlet是没有加载的,只有第一次访问的时候才会加载场景一:DispatcherServlet懒加载情况,启动的时候如下图只有一个ApplicationContext的初始化,此时并没有DispatcherServlet的初始化,接下来我们进行一次接口调用,如下图:发现在进行接口调用的时候,才初始化了DispatcherServlet,接原创 2022-03-14 09:29:01 · 9628 阅读 · 0 评论 -
自我保护机制
默认情况下,如果注册中心在一定时间内(默认90秒)没有接收到微服务实例的心跳,注册中心将会移除该实例。但是当网络故障发生时,微服务与注册中心之间无法正常通信,而微服务本身是正常运行的,此时不应该移除这个微服务,所以此时可以引入自我保护机制。自我保护机制自我保护模式是一种针对网络异常波动的安全保护措施,使用自我保护模式能使注册中心集群更加健壮、稳定的运行。该保护机制的目的是避免网络连接故障,在发生网络故障时,微服务和注册中心之间无法正常通信,但服务本身是健康的,不应该注销该服务,如果eureka因网络故原创 2021-09-23 14:44:19 · 910 阅读 · 0 评论 -
心跳检测机制
定义心跳包就是在客户端和服务器之间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似心跳,所以叫做心跳包。功能描述用来判断对方是否正常运行,采用定时发送简单的通讯包,如果在指定时间内未收到对方响应,则判断对方已经离线。用于检测TCP的异常断开。基本原因是服务器端不能有效的判断客户端是否在线,也就是说,服务器无法区分客户端是长时间空闲,还是已经掉线的情况。所谓心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。代码就是每个几分钟发送一个固定信息给服务端,服务端收到后回复原创 2021-09-22 18:04:25 · 4356 阅读 · 0 评论 -
异步请求和异步调用
异步请求与同步请求我们先通过一张图来区分一下异步请求和同步请求的区别:在上图中有三个角色:客户端、Web容器和业务处理线程。两个流程中客户端对Web容器的请求,都是同步的。因为它们在请求客户端时都处于阻塞等待状态,并没有进行异步处理。在Web容器部分,第一个流程采用同步请求,第二个流程采用异步回调的形式。通过异步处理,可以先释放容器分配给请求的线程与相关资源,减轻系统负担,从而增加了服务器对客户端请求的吞吐量。但并发请求量较大时,通常会通过负载均衡的方案来解决,而不是异步。//原创 2021-03-22 11:08:24 · 224 阅读 · 0 评论 -
亿级系统搭建 - 单机到分布式集群
大规模流量的网站架构,从来都是慢慢“成长”而来。而这个过程中,会遇到很多问题,在不断解决问题的过程中,Web系统变得越来越大。并且,新的挑战又往往出现在旧的解决方案之上当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题。为了解决这些性能压力带来问题,我们需要在Web系统架构层面搭建多个层次的缓存机制。在不同的压力阶段,我们会遇到不同的问题,通过搭建不同的服务和架构来解决。Web负载均衡Web负载均衡(..原创 2021-01-29 14:53:31 · 234 阅读 · 0 评论 -
SpringBoot读取配置文件
核心配置文件核心配置文件是指在resources根目录下的application.properties或application.yml配置文件,读取这两个配置文件的方法有两种,都比较简单方式一:使用@Value方式(常用)@Value("${ccb.student.name}")private String name;方式2:使用Environment方式@Autowiredprivate Environment env;env.getProperty("ccb.stud..原创 2021-01-22 09:14:29 · 137 阅读 · 0 评论 -
分布式事务解决方案
如果一个事务调用了不同服务器上的操作,那么它就成为了一个分布式事务。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。当我们的单个数据库的性能产生瓶颈的时候,我们可能会对数据库进行分区,这里所说的分区指的是物理分区,分区之后可能不同的库就处于不同的服务器上了,这个时候单个数据库的ACID已经不能适应这种情况了,而在这种ACID的集群环境下,再想保证集群的ACID几乎是很难达到,或者即使能达到那么效率和性能会大幅下降,最为关键的是再很难扩展新的分区了,这个时候如果再追求集群的ACID会导致我.原创 2021-01-20 22:25:57 · 144 阅读 · 0 评论 -
分布式锁解决方案
分布式锁三种实现方式:1. 基于数据库实现分布式锁;2. 基于缓存(Redis等)实现分布式锁;3. 基于Zookeeper实现分布式锁;一、基于数据库实现分布式锁1. 悲观锁利用select … where … for update 排他锁注意: 其他附加功能与实现一基本一致,这里需要注意的是“where name=lock ”,name字段必须要走索引,否则会锁表。有些情况下,比如表不大,mysql优化器会不走这个索引,导致锁表问题。2. 乐观锁所谓乐观..原创 2021-01-20 18:13:38 · 264 阅读 · 0 评论 -
负载均衡
负载均衡是指服务器性能达到极限时通过服务器集群来横向增加系统的吞吐量和性能。一、服务器负载均衡 服务器负载均衡就是我们平时所说的负载均衡,是指在服务器上游做服务请求分发,常用的方式有:(1)DNS域名解析负载均衡:假设我们的域名指向了多个IP地址,当一个域名请求过来时,DNS服务器进行域名解析将域名转换为IP地址,在1:N的映射转换中实现负载均衡。DNS服务器提供简单的负载均衡算法,但当其中某台服务器出现故障时,通知DNS服务器移除当前故障IP (2)反向代理负载均衡:反向代...原创 2021-01-20 09:48:56 · 215 阅读 · 0 评论 -
微服务架构设计的12个要点
一、负载均衡二、API网关三、无状态化与独立有状态集群四、异步处理机制五、数据集群、分库分表六、缓存七、服务拆分与服务发现八、服务编排与弹性伸缩九、统一配置中心十、统一日志中心十一、熔断、限流、降级十二、全方位的监控...原创 2021-01-20 09:45:49 · 367 阅读 · 0 评论 -
SpringBoot热加载
使用SpringBoot开发的时候,修改完程序之后,需要手动点击重启,才能让修改生效,比较麻烦,也占用了更多的时间。其实可以通过一些插件,实现修改之后的热加载,并且只加载修改部分,从而也提高了效率。方式一:使用JRebel//todo方式二:使用spring-boot-devtools//todo方式三:使用springloaded//todo...原创 2021-01-19 11:43:58 · 5040 阅读 · 0 评论 -
微服务之 - ServiceMesh
Service Mesh(服务网格)概念在社区里头非常火,有人提出2018年是Service Mesh年,还有人提出Service Mesh是下一代微服务架构基础。那么到底什么是Service Meth? 它的诞生是为了解决什么问题?企业是否适合引入Service Meth?微服务架构的核心技术问题在业务规模和研发效能提升等因素的驱动下,从单块应用向微服务架构的转型,已经称为很多企业(尤其是互联网企业)数字化转型的趋势。在微服务模式下,企业内部服务少则几个到几十个,多则上百个,每个服务一般都以集原创 2021-01-18 11:07:01 · 616 阅读 · 0 评论