
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
服务上线与下线是程序员在做软件运维管理的时候需要关注到的一个问题,而今天我们就通过案例分析来了解一下,服务下线都涉及到了哪些问题。
外部请求必须处理完
服务时时刻刻都在处理请求,一旦收到要停止的命令,那么必须等待当前的请求执行完毕才能去关闭一些资源,否则就会出现各种异常。
除了等待,还需要让外部的请求不要再过来,要告诉别人,我要下班了,不要来找我了,去找其他人吧。否则你永远都下不了班,是一样的道理。
异步任务必须处理完
这里的异步任务通常指我们放入线程池中进行处理的任务,如果强制进行程序的停止,那么线程池里的任务就会丢掉,所以除了同步被外部调用的逻辑要处理完,这种异步的逻辑也是要处理完的。
这里再提一点,就是如果异步任务丢失会对业务造成影响的这种场景,建议还是不要放到线程池里面进行处理,如果要放,那么必须有持久化,程序重启后可以继续执行。
消息必须消费完
消息也是异步任务的一种类型,我们的目标肯定也是需要让消息消费完才行。但是消息跟线程池里的任务大的差别就在于:消息是有持久化的,并且有重试功能。
就算消息没消费完,程序强制停止,这条消息没有ACK,然后就会重试到另一台机器的实例上继续执行,前提是你的这个执行逻辑不能产生脏数据,一定要通过事务保证数据的一致性。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。