获得徽章 0
- #毕业考研还是工作?# nginx\n具体就是一个轻量级以及高性能的web服务软件。\n\nnginx特点\n1、稳定性高。(但不如apache)\n\n2、系统资源消耗比较低。(处理http请求的并发能力较高,单台处理器可以处理3w-5w的并发请求)\n\n注:一般在企业中,为了保存服务器稳定,并发量的设置一般在2w左右。\n\nnginx的主要功能\n1、静态文件服务。(nginx可以直接提供静态文件服务。能够高效处理并响应静态文件的请求。)\n\n2、反向代理。(nginx本身可以作为一个反向代理的服务器。可以把客户端的请求转发给后端多个服务器,实现负载均衡,高可用。可以提高整个集群的性能。)\n\n反向代理:客户端在请求时,沟通代理服务器,会把请求的流量按照轮询算法,转发到后台不同的服务器,实现高可用和负载均衡。\n3、处理动态内容。(nginx处理动态内容很差,但它可以代理请求,发送到后端的动态服务处理,动态服务处理完后,由nginx把动态请求响应给客户端。)\n\n4、可以实现SSL/TLS加密(https的加密方式数字证书验证机制)\n\n5、虚拟主机。(nginx可以在一台服务器上设置多个虚拟主机,同一台服务器上可以有多个域名和站点。)\n\n6、URL重定向。(可以实现灵活的URL重写和重定向。)\n\n7、缓存功能。\n\n8、日志功能。(可以详细的记录请求的信息,包括访问时间,请求路径,IP地址,响应状态。有助于故障排查。)展开评论点赞
- #2023年中总结# 消费者在消费消息的时候,需要知道从Broker的哪一个消息队列中去获取消息。所以,在消费者端必须要做负载均衡,即Broker端中多个消费队列分配给同一个消费者组中的哪些消费者消费。上篇文章讲解了负载均衡过程,这篇文章讲解消费者负载均衡的策略AllocateMessageQueueStrategy是负载均衡策略接口,有两个方法,分别是allocate和getName,allocate方法是为消费者分配消息队列,getName是获取负载均衡策略的名AllocateMessageQueueStrategy接口有六个子类实现。负载均衡策略说明它们具体说明如下:AllocateMessageQueueAveragely:平均负载策略,将消息队列平均分配给每一个消息者。假设一个topic有8个消息队列,有3个消息者A、B、C,那么采用该负载策略,那么A首先分配3个消息队列,然后B也分配3个消息队列,最后C分配2个消息队列。AllocateMessageQueueAveragelyByCircle:循环平均负载策略,跟平均负载策略不同的是。是将消息队列一个一个的分配给消息者。假设一个topic有8个消息队列,有3个消息者A、B、C。采用循环平均负载策略分配的方法是首先给A、B、C分别分配一个,然后再进行第二轮分配,也是给A、B、C分别再分配一个,这样子还剩下两个就分别分配给A、B。AllocateMessageQueueByConfig:配置负载策略,用户直接给消费者分配配置消息队列。AllocateMessageQueueConsistentHash:一致性哈希负载策略,为每一个消费者创建多个虚拟的节点,将虚拟节点连成一个环,这个环就是一致性哈希环,然后将消息队列进行哈希计算得到哈希值,通过哈希值找到距离一致性哈希环顺时针方向最近的那个虚拟节点,此时就可以通过虚拟节点获取到真实的消费者了,就将这个消息队列分配给这个消息者。展开评论点赞
- #与A-SOUL一起成为更好的自己# Mysql数据一致性与处理并发访问处理:隔离级别,锁策略与MVCC
莫念Program
2023-07-03 19:30
10
基础概念
脏读 一个事务中访问到了另外一个事务未提交的数据
不可重复读 一个事务内根据同一个条件对行记录进行多次查询,返回的结果不一致
幻读 同一个事务内多次查询返回的结果集不一样(增加了或者减少)
隔离级别
隔离级别 描述 锁
读未提交(read uncommit) 一个事务还没提交时,它做的变更就能被别的事务看到 任何操作都不会加锁
读提交(read commit) 一个事务提交之后,它做的变更才会被其他事务看到 在RC级别中,数据的读取都是不加锁的,但是数据的写入、修改和删除是需要加锁的
可重复读(repeatable read) 一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的 读操作不需要加锁,而写操作需要加锁。
串行化读(serializable): 当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。 “写”会加“写锁”,“读”会加“读锁”
隔离级别 脏读 不可重复读 幻读
读未提交(read uncommit) 可能 可能 可能
读提交(read commit) 不可能 可能 可能
可重复读(repeatable read) 不可能 不可能(MVCC实现) 不可能(用next-key lock 保证)
串行化读(serializable) 不可能 不可能 不可能
mysql隔离级别有两个作用域,一个是当前会话隔离级别,另一个是系统隔离级别。
读取数据时,数据库会创建视图,访问的时候以视图的逻辑结果为准
隔离级别 视图
读未提交(read uncommit) 直接返回记录上的最新值,没有视图概念
读提交(read commit) 视图是在每个 SQL 语句开始执行的时候创建的
可重复读(repeatable read) 视图是在事务启动时创建的,整个事务存在期间都用这个视图
串行化读(serializable) 直接用加锁的方式来避免并行访问。展开评论点赞 - #与A-SOUL一起成为更好的自己# ptime命令用于显示系统的负载情况和运行时间,要使用uptime命令查看系统的负载情况,只需在终端中输入uptime即可。
[root@svr01]$ uptime
21:27:44 up 207 days, 11:15, 1 user, load average: 26.45, 16.76, 7.50
在输出结果中,分别表示最近1分钟、5分钟和15分钟的平均负载。
系统负载是指在某个特定时间范围内正在使用或等待CPU资源的进程数量。下面是对不同负载范围的解释:
如果系统平均负载小于等于3,表示系统性能良好,可以正常运行。
如果系统平均负载小于等于4,表示系统性能还可以,可以接受一些额外的负载。
如果系统平均负载大于5,表示系统负载过重,可能会影响系统的性能并导致严重的问题,此时考虑扩容,例如增加CPU核心数量。
作者:洛神灬殇
链接:juejin.cn
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。展开评论点赞 - #与A-SOUL一起成为更好的自己# BeanPostProcessor 的设计目标主要是提供一种扩展机制,让开发者可以在 Spring Bean 的初始化阶段进行自定义操作。这种设计理念主要体现了 Spring 的一种重要原则,即 “开放封闭原则”。开放封闭原则强调软件实体(类、模块、函数等等)应该对于扩展是开放的,对于修改是封闭的。在这里,Spring 容器对于 Bean 的创建、初始化、销毁等生命周期进行了管理,但同时开放了 BeanPostProcessor 这种扩展点,让开发者可以在不修改 Spring 源码的情况下,实现对 Spring Bean 生命周期的自定义操作,这种设计理念大大提升了 Spring 的灵活性和可扩展性。
BeanPostProcessor 不是 Spring Bean 生命周期的一部分,但它是在 Spring Bean 生命周期中起重要作用的组件。展开评论点赞