一、概述
笔者本文会讲述升级接口包所引起的一些问题。这些问题都在真实的项目遇到到。有的在线上已经出现重大的故障。这些问题被大部分同学在开发的时候忽视了。掌握这些要点,将使你在以后的开发中避免类似的问题。
二、背景知识(MOM\RPC)
我们知道,在互联网中,可靠情况下,进程(线程)需要通信基本基于TCP/IP连接。连接连上需要三次握手,断开需要四次握手。应用层通信基本就有了RPC连接与MOM消息中间件。在java中,慢慢发展出来了:JMS、MDB、RMI、EJB等通信技术。
- RPC技术的基本模型是:我们知道RPC有的时候会带一个注册中心,一般是管理服务器的。他是一个中心,一般也不会成为瓶颈。RPC就是client调用server端。其实我们很多应用都是基于这个。如:传统的浏览器,大多数的CS程序(IM等)一般开源的软件有:Hessian、Mina、Netty等。一般要求有接口,与接口参数DTO。这些都需要定义在接口包中,因为要两边共享。这些一般定义在二方包中。
- MOM,消息中间件。一般也是基于RPC的,不过从client到server中间有一个消息中间件。消息中间件接受client传输的消息,把消息存储下来,再把消息给server。也就是说如果server消费失败,那么消息就会持久化在消息中间件中。这个就是MOM的核心,存储转发模式。一般要求有队列,message有效负荷的约定(一般可以是json字符串,也可以二方包中的DTO。建议用 JSON字符串。)