整套思考和想法算是一种灵光乍现,昨天上来去打了第二针疫苗,经验了一整套流程后,发现整套流程布局很有意思,感觉整套流程十分贴合这几年风行的微服务的架构思维.
整套流程能够从外面看到 熔断,限流,音讯告诉,队列,缓冲区,负载平衡
等等.
全局负载平衡
一个城市,能够打疫苗的人很多,须要打疫苗的时候,就须要预约,或者报名,而一旦预约,就相当于浏览器开始发动了网络申请。而一个城市会有很多的疫苗服务站,对于要打疫苗的人来说,能够抉择的中央很多,然而用户是不晓得哪些疫苗服务点是闲暇的,疫苗服务方能够把用户调配到不同的服务点。而这个过程就是 全局负载平衡 了。
全局负载平衡要害的技术是智能 DNS,它能够通过多种负载平衡策略来将客户端须要拜访的域名解析到不同的数据中心不同的线路上,比方通过 IP 地理信息数据库解析到最近的线路,或者衡量不同线路的忙碌度解析到闲暇的线路等等。
而对于疫苗服务方,就是把用户散发到就近的某个服务点,而后给用户下发能够打疫苗的凭证,告知用户能够去打疫苗了。
入口网关
达到疫苗服务点后,首先会进入入口,入口这里会有几个安保人员,或者说是服务人员,一次来打疫苗的人可能有一个、几个甚至几十个,人大量的时候(当人数少于这些服务人员),会有局部服务人员闲暇,人多的时候,会排成队列,对这些人员的疑难进行解决,而后再往后续步骤散发。
这个过程中,服务人员其实充当的是一种网关,对服务进行负载平衡,往闲暇地位发送。另外这个过程通常来说,会比拟快,而后人员能够安顿比拟少,对应的就是服务器资源能够给得比拟少。
取号
通过入口的解决后,用户就会进入取号阶段,取号的时候,也会安顿两个人员进行解决,用户在入口的时候通过解决后,会以队列的模式进入到取号区,入口是解决用户一些疑难和对后续服务再次做负载的,而进去取号阶段就开始正式的后续服务了。取号的过程中会验证凭证,如果没有能够打疫苗的凭证,就会被告知不能够打疫苗,这个过程能够说是一个 拦截器
的过程,对不合理的服务申请进行拦挡。
拦挡后产生的能够交织 异样
, 那么就须要对 异样
进行解决,比方告知用户怎么去获取凭证、怎么预约。如果编写成程序,这个过程是须要一个专门的异样解决的,然而因为是人,所以就会很灵便,再取号过程中顺带就会进行异样解决了,会询问用户是哪个社区,而后告知用户怎么解决后续步骤。
全局缓冲区
对于缓冲区的程序概念,这里就不做解释,咱们关注一下打疫苗这个过程的缓冲区。通过取号后,用户就会进入缓冲区,缓冲区是一个长期搭建起来的方舱,外面有空调,有椅子,用户能够在这里进行期待。
有了缓冲区之后,用户就能够在缓冲区有序的期待后续的服务,就不会到处乱窜,好治理。对后续的服务也不会造成间接的冲击。
从我所看到的状况来看,这个缓冲区是最大的,也是一个最重要的缓冲区,我把这个叫做“全局缓冲区”
,其实从全局上的情理来看,这确实也充当了一个全局的缓冲区。
音讯告诉
整个疫苗服务过程都充斥音讯告诉,音讯告诉依附的是挂在每个服务地位的大喇叭。从程序的设计上来说,音讯告诉的内容应该是轻量级的内容,足够简略,也足够快。对应到这里的疫苗服务来说,音讯确实足够轻量,根本就是:“两千号前请返回疫苗等待室,两千号前请返回疫苗等待室,两千号前请返回疫苗等待室。”
。足可见音讯的轻量,音讯轻量也足够快。另外这里可见说了三遍,这能够算是音讯的重试形式,因为是单向音讯通信,屡次音讯能够确保接管音讯的服务齐全接管到音讯。
当然,这里可能也会有人去上厕所了,导致音讯漏掉,而对于在缓冲区等待的人能够询问缓冲区服务人员,进行音讯确认。而这里的服务人员又充当了 异样处理器
。
疫苗缓冲区
打疫苗的过程就是一个产生理论服务的过程,疫苗服务在室内。进入室内时候会查看号码凭证,这个号码凭证是在取号的时候拿到的凭证。
另外,从取号的缓冲区收到音讯告诉的人进入到打疫苗的过程中,还会进入一次缓冲区,不过这个缓冲区容量较小,因为容量小,所以会更快。进入缓冲区等待的时候,这个时候还会接管到一次音讯告诉,接管到音讯告诉后满足号数内的用户能力进入打疫苗的流程。
通过门口安保人员验证通过后,进入打疫苗的室内。
队列
队列也是用于解决缓冲的,然而队列更轻量。进入打疫苗的理论流程后,会排队等待服务,比方须要建档的进行建档,须要验证是否是打第二针疫苗的就进行第二针疫苗的验证。如果预约的是一针疫苗服务,那么就会进入一针疫苗的相干流程解决。
多过程解决
打疫苗的过程就是一个多过程解决,对于建档,验证打什么针的过程也是一个多过程的过程,每个过程会有好几个人进行解决。
队列进入多过程的验证流程,通过后,会产生新的队列。而对于验证后推入的队列是同一个,因为每个解决验证、建档的工作人员解决不统一,会产生并发状况,比方两个人同时进入队列,这个过程就会产生相似于锁这样的效应。比方两个人甚至三个人进入队列入口,那么工作人员就会让人员期待,而后再疾速安顿进入队列。而如果进入队列的用户确实过多,那么此时就会进入一个小的缓冲区,大家能够在这个缓冲区坐一会,或是抉择看一会手机,而后等队列闲暇再次安顿进入队列。
理论打疫苗的过程再从这个队列出队再次进入多过程的解决。这个过程,仿佛有些不合理的中央,从情理来看,应该是通过建档、验证这个多线程环节后,间接流入到后续的绑定的打疫苗工作人员就行,就不必再次进入同一个队列,而后后续打疫苗的工作人员再从队列外面取。
然而实际上这个安顿具备肯定的合理性。首先就是,解决建档、验证的工作人员和理论打疫苗的工作人员不是匹配的,那么进入队列后,统一安排是一个不错的计划,而通常来说,在没有意外的状况下这个队列是足够快的。而对于不够快的状况下,又提供了缓冲区,解决并发和阻塞的问题。
监控、反馈、治理
监控这个就很好了解了,会有专门的工作人员对整套体系进行查看、反馈、协调、信息收集。有了这些货色后,又能够给全局负载平衡提供信息,这样就能够失去尽可能匹配的流量流入。
收集到的各方面信息又能够用于欠缺整套零碎自身,让整套零碎的资源失去更好的利用,不会让工作人员达到很累的状态,也不会让某一些工作人员处于很闲的状态。以及对外部产生的问题进行修复、调整。
集群、服务化
从整体来看,一个疫苗服务点其实能够当作一个集群,因为最终的后果就是多个工作人员给须要打疫苗的人员打疫苗,形成了一个打疫苗的集群。
放大了来看,各个疫苗服务点(集群)够成了一整套服务体系。
如果把整套疫苗零碎当作一个服务来对待的话,那么各种政务服务零碎就形成了整个城市,各个城市服务零碎的互相调用就形成了一整套的微服务体系架构。
后记
程序是来源于生存的形象,有时候,对于生存场景的思考,还是十分有意思的,从生存场景中的思考能增强对形象的了解,而形象的思维又能给现实生活事件上的解决提供领导。