
分布式系统
文章平均质量分 64
gqltt
这个作者很懒,什么都没留下…
展开
-
21大软件架构特点的全面解析
众所周知,架构特点多以"ility"结尾(例如 scalability、deployability),也被称为 NFR(非功能需求)、质量属性。架构的特点没有固定清单,但标准是有的,就是 ISO25010:我们从业务需求(业务特征)、我们期望的系统运营方式(运营特征)中总结出这些特点,它们是隐式的、贯穿各领域,是架构师在字里行间能看出来的特点。《软件架构基础》书中的这张表是隐藏特点的一个例子。《实践中的软件架构》一书中对架构特点解释得很清楚。转载 2024-01-13 18:09:33 · 246 阅读 · 0 评论 -
Java面向容错编程之重试机制
容错编程是一种旨在确保应用程序的可靠性和稳定性的编程思想,它采取以下措施:1.异常处理:通过捕获和处理异常来避免应用程序崩溃。2.错误处理:通过检查错误代码并采取适当的措施,如重试或回滚,来处理错误。3.重试机制:在出现错误时,尝试重新执行代码块,直到成功或达到最大尝试次数。4.备份机制:在主要系统出现故障时,切换到备用系统以保持应用程序的正常运行。5.日志记录:记录错误和异常信息以便后续排查问题。容错编程是一种重要的编程思想,它能够提高应用程序的可靠性和稳定性,同时提高代码的健壮性。转载 2024-01-13 17:56:31 · 483 阅读 · 0 评论 -
短信的上行(MO)和下行(MT)详解
比如, 平时给你的朋友发送一条短信, 对你来说就是上行(MO), 而对你的朋友来说, 就是下行(MT);MO就是短信中心发给SP的(大多数时候就是手机回复给网站), 是移动终端(网络设备, 比如手机)对SP发送请求, SP作回应, 可用于用户进行点播和查询。MO即消息上行, 也就是人们常说的发信(终端发起的, 终端即网络设备, 可以理解为手机), 是一个从手机发起的过程。MT即消息下行, 也就是人们常说的收信(终端发起的, 终端即网络设备, 可以理解为手机), 是一个到手机结束的过程。转载 2023-08-14 10:31:01 · 2834 阅读 · 0 评论 -
Redis集群模式使用Lua脚本的限制
由于前段时间自己写的redis定长队列使用了lua脚本,测试好好的,线上就报错了,还好不是什么大问题。因为目前测试环境单个实例,线上环境使用的是redis集群模式,所以已经踩了不少坑。其中key和arg都用lua变量,因为好几处使用了,正常来讲申明变量没什么问题,可是阿里集群对Lua脚本进行了限制,再通过错误信息,意思为,key的位置必须为数组,不能使用脚本变量。修改lua脚本,去掉key的local变量,改为KEYS[i]数组的形式,将数组直接传入进去。集群中Lua脚本的限制。转载 2023-08-07 16:27:28 · 1674 阅读 · 0 评论 -
Redis并发数限流
不管多忙都要有产出吧....转载 2023-08-07 16:24:06 · 400 阅读 · 0 评论 -
Redis-布隆过滤器(Bloom Filter)详解
布隆过滤器(Bloom Filter)是 1970 年由布隆提出的,是一种非常节省空间的概率数据结构,运行速度快,占用内存小,但是有一定的误判率且无法删除元素。它实际上是一个很长的二进制向量和一系列随机映射函数组成,主要用于判断一个元素是否在一个集合中。转载 2023-08-02 09:56:38 · 4598 阅读 · 0 评论 -
ULID规范解读与实现原理
从技术实现上来看,26个字符的Base32编码字符串可以包含130 bit信息,而ULID只包含128 bit信息,所以该编码算法是能完全满足ULID的需要。基于Base32编码能够生成的最大的合法ULID其实就是7ZZZZZZZZZZZZZZZZZZZZZZZZZ,并且使用的时间戳为epoch time的281474976710655或者说2 ^ 48 - 1。转载 2022-12-27 12:00:11 · 597 阅读 · 0 评论 -
深入理解Nginx~网络连接的设置
1、读取HTTP头部的超时时间 如果在一个时间间隔(超时时间)内没有读取到客户端发来的字节,则认为超时,并向客户端返回408("Request timed out")响应。2、读取HTTP包体的超时时间3、发送响应的超时时间如果某个连接超过send_timeout定义的超时时间,那么Nginx将会关闭这个连接。4、reset_timeout_connection连接超时后将通过向客户端发送RST包来直接重置连接。注意,使用RST重置包关闭连接会带来一些问题,默认情况下不原创 2022-07-05 22:12:22 · 2079 阅读 · 0 评论 -
深入理解Nginx~文件路径的定义
1、以root方式设置资源路径eg.定义资源文件相对于HTTP请求的根目录在上面的配置中,如果有一个请求的URI是/download/index/test.html,那么Web服务器将会返回服务器上optwebhtml/download/index/test.html文件的内容。2、以alias方式设置资源路径与root的不同点主要在于如何解读紧跟location后面的uri参数,这将会致使alias与root以不同的方式将用户请求映射到真正的磁盘文件上。例如,如果有一个请求的URI原创 2022-07-05 21:44:13 · 1179 阅读 · 0 评论 -
深入理解Nginx~虚拟主机与请求的分发
1、监听端口·default:将所在的server块作为整个Web服务的默认server块。如果没有设置这个参数,那么将会以在nginx.conf中找到的第一个server块作为默认server块。·default_server:同上。·backlog=num:表示TCP中backlog队列的大小。默认为–1,表示不予设置。·rcvbuf=size:设置监听句柄的SO_RCVBUF参数。·sndbuf=size:设置监听句柄的SO_SNDBUF参数。·accept_filter:设置accept过滤原创 2022-07-05 21:15:26 · 708 阅读 · 0 评论 -
深入理解Nginx~优化性能的配置项
1、Nginx worker进程个数 一般情况下,用户要配置与CPU内核数相等的worker进程,并且使用下面的worker_cpu_affinity配置来绑定CPU内核。2、绑定Nginx worker进程到指定的CPU内核如果有4颗CPU内核,就可以进行如下配置:注意 worker_cpu_affinity配置仅对Linux操作系统有效。Linux操作系统使用sched_setaffinity()系统调用实现这个功能。3、SSL硬件加速4、系统调用gettimeo原创 2022-07-05 16:58:51 · 420 阅读 · 0 评论 -
深入理解Nginx~正常运行的配置项
1、定义环境变量2、嵌入其他配置文件3、pid文件的路径 保存master进程ID的pid文件存放路径。默认与configure执行时的参数“--pid-path”所指定的路径是相同的。4、Nginx worker进程运行的用户及用户组5、指定Nginx worker进程可以打开的最大句柄描述符个数6、限制信号队列 设置每个用户发往Nginx的信号队列的大小。也就是说,当某个用户的信号队列满了,这个用户再发送的信号量会被丢掉。...原创 2022-07-05 16:46:37 · 330 阅读 · 0 评论 -
深入理解Nginx~用于调试进程和定位问题
1、是否以守护进程方式运行Nginx 守护进程(daemon)是脱离终端并且在后台运行的进程。它脱离终端是为了避免进程执行过程中的信息在任何终端上显示,这样一来,进程也不会被任何终端所产生的信息所打断。2、是否以master/worker方式工作3、error日志的设置 pathfile参数可以是一个具体的文件,例如,默认情况下是logs/error.log文件,最好将它放到一个磁盘空间足够大的位置;pathfile也可以是/dev/null,这样就不会输出任何原创 2022-07-05 16:40:03 · 725 阅读 · 0 评论 -
深入理解Nginx~Nginx配置的通用语法
Nginx的配置文件其实是一个普通的文本文件。1、块配置项块配置项由一个块配置项名和一对大括号组成。2、配置项的语法格式 首先,在行首的是配置项名,这些配置项名必须是Nginx的某一个模块想要处理的,配置项名输入结束后,将以空格作为分隔符。 其次是配置项值,它可以是数字或字符串(当然也包括正则表达式)。可以包含多个值,配置项值之间仍然由空格符来分隔。 最后,每行配置的结尾需要加上分号。注意:如果配置项值中包括语法符号,比如空格符,那么需要使用单引号原创 2022-07-05 14:46:39 · 421 阅读 · 0 评论 -
深入理解Nginx~运行中的Nginx进程间的关系
在正式提供服务的产品环境下,部署Nginx时都是使用一个master进程来管理多个worker进程,一般情况下,worker进程的数量与服务器上的CPU核心数相等。每一个worker进程都是繁忙的,它们在真正地提供互联网服务,master进程则很“清闲”,只负责监控管理worker进程。...原创 2022-07-05 14:27:25 · 286 阅读 · 0 评论 -
深入理解Nginx~Nginx的命令行控制
默认情况下,Nginx被安装在目录usrlocal/nginx/中,其二进制文件路径为usrlocal/nginc/sbin/nginx,配置文件路径为usrlocal/nginx/conf/nginx.conf。(1)默认方式启动这时,会读取默认路径下的配置文件:usrlocal/nginx/conf/nginx.conf。实际上,在没有显式指定nginx.conf配置文件路径时,将打开在configure命令执行时使用--conf-path=PATH指定的nginx.conf文件(2)另行指定原创 2022-07-04 15:00:32 · 369 阅读 · 0 评论