1. 程式人生 > >dubbo 服務的呼叫堆疊-- 學習dubbo啟動後執行邏輯和程式碼

dubbo 服務的呼叫堆疊-- 學習dubbo啟動後執行邏輯和程式碼

如何做到優雅關閉.

  1. 關閉dubbo執行緒池沒有用,直接拒絕,除非客戶端能夠識別到這種拒絕, 業務決定, 可實現優雅關閉.

  2. 應該是在呼叫方通過服務發現,發現這臺機器已經下線,不再呼叫這臺機器就可以了. 避免了1方案中無端浪費一次請求

 衍生: mq的優雅關閉. 1. 關閉後不再訂閱queue,將已有的消費,並上傳,然後關閉結束. 待一段時間後分配給另外一臺機器. 重新上線後,重新將quque分配給這臺機器.

  2. 較差的是直接將執行緒池關閉,導致訊息不停拉下來,但無法被消費,直接報錯. 消費進度也無法前進,也無法變成retrymq. 可行,但訊息被多餘拉取了.

參考文章 : http://blog.csdn.net/hzzhoushaoyu/article/details/46673571

Daemon Thread [DubboServerHandler-10.0.83.144:10871-thread-5] (Suspended (breakpoint at line 270 in TradeCoreRemoteServiceImpl))    

    TradeCoreRemoteServiceImpl.transfer(TransferRpcParam) line: 270    
    Wrapper9.invokeMethod(Object, String, Class[], Object[]) line: not available    
    JavassistProxyFactory$1.doInvoke(T, String, Class<?>[], Object[]) line: 46    
    JavassistProxyFactory$1(AbstractProxyInvoker<T>).invoke(Invocation) line: 72    
    RegistryProtocol$InvokerDelegete<T>(InvokerWrapper<T>).invoke(Invocation) line: 53    
    KpayDubboProviderFilter.invoke(Invoker<?>, Invocation) line: 71    
    ProtocolFilterWrapper$1.invoke(Invocation) line: 91    
    ProviderContextSwitchFilter.invoke(Invoker<?>, Invocation) line: 67    
    ProtocolFilterWrapper$1.invoke(Invocation) line: 91    
    ExceptionFilter.invoke(Invoker<?>, Invocation) line: 64    
    ProtocolFilterWrapper$1.invoke(Invocation) line: 91    
    TimeoutFilter.invoke(Invoker<?>, Invocation) line: 42    
    ProtocolFilterWrapper$1.invoke(Invocation) line: 91    
    MonitorFilter.invoke(Invoker<?>, Invocation) line: 75    
    ProtocolFilterWrapper$1.invoke(Invocation) line: 91    
    TraceFilter.invoke(Invoker<?>, Invocation) line: 78    
    ProtocolFilterWrapper$1.invoke(Invocation) line: 91    
    ContextFilter.invoke(Invoker<?>, Invocation) line: 60    
    ProtocolFilterWrapper$1.invoke(Invocation) line: 91    
    GenericFilter.invoke(Invoker<?>, Invocation) line: 112    
    ProtocolFilterWrapper$1.invoke(Invocation) line: 91    
    ClassLoaderFilter.invoke(Invoker<?>, Invocation) line: 38    
    ProtocolFilterWrapper$1.invoke(Invocation) line: 91    
    EchoFilter.invoke(Invoker<?>, Invocation) line: 38    
    ProtocolFilterWrapper$1.invoke(Invocation) line: 91    
    DubboProtocol$1.reply(ExchangeChannel, Object) line: 108    
    HeaderExchangeHandler.handleRequest(ExchangeChannel, Request) line: 84    
    HeaderExchangeHandler.received(Channel, Object) line: 170    
    DecodeHandler.received(Channel, Object) line: 52    
    ChannelEventRunnable.run() line: 82    
    ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1145    
    ThreadPoolExecutor$Worker.run() line: 615    
    Thread.run() line: 722 [local variables unavailable]