eureka 集群失败的原因_Eureka集群的那些坑
今天遇到一個Eureka集群的一個坑。
問題現場類似是這樣的:兩臺Eureka組成的服務注冊中心集群,兩臺服務提供方server1、server2,兩個服務調用方client1、client2。
正常的情況下:
client1和client2通過服務中心獲取的服務提供方的注冊的元數據信息,然后本地緩存調用server2、server1的服務API是沒問題的。調用server的api服務時采用的FeignClient通過eureka注冊中心獲取服務信息調用。
以下簡寫成client服務、server服務、eureka服務:
但今天遇到的情況是client調用server時,返回結果不穩定,以下是排查過程。
1、習慣性的先查看client方日志,發現接口調用有一定的概率失敗,但是并沒有拋異常,而僅僅是response返回null。
2、查看server方日志,并沒有發現異常,也沒有發現response為null的情況,并且server方的本機上訪問接口都是響應正常。
3、通過分析兩方日志,猜想client端的請求可能沒有打到server方。
4、分析整個調用流程,只差eureka服務這一個環節沒有排查了,然后查看eureka服務上的server方注冊信息是否正常。
5、發現兩臺eureka服務,有一臺tomcat假死了,至此猜想是假死的eureka服務假死所致。
6、驗證猜想,重啟假死的eureka的tomcat服務,問題驗證解決。
那么問題來了,
1、為了一臺eureka假死了,沒有拋異常,只在response中返回個null?
2、eureka集群的一臺實例假死,為什么會導致服務間調用不穩定?
3、eureka服務跑了大半年,怎么突然一臺實例假死了?
接下來,我們來探討這三個問題。
1、為了一臺eureka假死了,沒有拋異常,只在response中返回個null?
這個問題經查,eureka假死,導致調用方調用服務方時,觸發了hystrix熔斷器,項目實現的熔斷降級接口直接在熔斷自動降級時返回null,這就回答了第一個問題。
2、eureka集群的一臺實例假死,為什么會導致服務間調用不穩定?
這個得翻看一下eureka的機制源碼了,猜想feign端在本地緩存90s后去刷新本地服務列表信息時,卡在調用eureka服務上了(此時恰好通過假死的eureka服務刷新),從而服務不可用。
3、eureka服務跑了大半年,怎么突然一臺實例假死了?
生產環境有多臺虛擬機eureka服務器,配置都一樣,其它的服務器沒有出過問題,只有一臺eureka服務會有類似周期性假死的問題,由于筆者生產環境權限所限,只能猜想可能是宿主機的原因,估計換臺機器可能就沒問題了,待驗證。
還有幾個等思考的問題,之后待續。。。。。。。。。。。。。
1、服務提供方配置了多個eureka 地址,是服務注冊時,是調用注冊到哪個上? ---> 猜想優化使用第一個,那第二個是何時用到的(除了第一個宕機的情況)
2、feign接口通過eureka調用服務時,是不需要自己項目也注冊到eureka上的,怎么處理?
3、服務調用方配置了多個eureka 地址,是獲取服務列表調用時,是調用注冊到哪個上? --> 猜想優化使用第一個,那第二個是何時用到的(除了第一個宕機的情況)
另外,昨天查eureka假死日志時,日志打的異常堆棧如下:
2019-06-13 18:07:58.907? INFO 23945 --- [a-EvictionTimer] c.n.e.registry.AbstractInstanceRegistry? : Running the evict task with compensationTime 0ms
2019-06-13 18:08:04.949 ERROR 23945 --- [nio-8001-exec-5] o.s.boot.web.support.ErrorPageFilter???? : Forwarding to error page from request [/] due to exception [Filter execution threw an exception]
javax.servlet.ServletException: Filter execution threw an exception
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:255) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:110) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:719) ~[catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:465) ~[catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:390) ~[catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:317) ~[catalina.jar:8.0.30]
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1257) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1037) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:980) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) ~[servlet-api.jar:na]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) ~[servlet-api.jar:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) ~[tomcat-websocket.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55) ~[spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:105) ~[spring-boot-actuator-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:89) ~[spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) ~[spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) ~[spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106) ~[spring-boot-actuator-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:117) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at org.springframework.boot.web.support.ErrorPageFilter.access$000(ErrorPageFilter.java:61) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at org.springframework.boot.web.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:92) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:110) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.30]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) [catalina.jar:8.0.30]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) [catalina.jar:8.0.30]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) [catalina.jar:8.0.30]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) [catalina.jar:8.0.30]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [catalina.jar:8.0.30]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) [catalina.jar:8.0.30]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521) [catalina.jar:8.0.30]
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096) [tomcat-coyote.jar:8.0.30]
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674) [tomcat-coyote.jar:8.0.30]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) [tomcat-coyote.jar:8.0.30]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) [tomcat-coyote.jar:8.0.30]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_20]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_20]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.0.30]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_20]
Caused by: java.lang.NoClassDefFoundError: com/thoughtworks/xstream/io/xml/PrettyPrintWriter
at com.thoughtworks.xstream.io.xml.DomDriver.createWriter(DomDriver.java:122) ~[xstream-1.4.9.jar:1.4.9]
at com.thoughtworks.xstream.io.xml.DomDriver.createWriter(DomDriver.java:127) ~[xstream-1.4.9.jar:1.4.9]
at com.thoughtworks.xstream.XStream.toXML(XStream.java:1042) ~[xstream-1.4.9.jar:1.4.9]
at com.netflix.discovery.converters.wrappers.CodecWrappers$XStreamXml.encode(CodecWrappers.java:377) ~[eureka-client-1.4.12.jar:1.4.12]
at com.netflix.discovery.provider.DiscoveryJerseyProvider.writeTo(DiscoveryJerseyProvider.java:135) ~[eureka-client-1.4.12.jar:1.4.12]
at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:302) ~[jersey-server-1.19.1.jar:1.19.1]
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1510) ~[jersey-server-1.19.1.jar:1.19.1]
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) ~[jersey-server-1.19.1.jar:1.19.1]
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) ~[jersey-server-1.19.1.jar:1.19.1]
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) ~[jersey-servlet-1.19.1.jar:1.19.1]
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) ~[jersey-servlet-1.19.1.jar:1.19.1]
at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:927) ~[jersey-servlet-1.19.1.jar:1.19.1]
at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:875) ~[jersey-servlet-1.19.1.jar:1.19.1]
at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:829) ~[jersey-servlet-1.19.1.jar:1.19.1]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.30]
... 93 common frames omitted
2019-06-13 18:08:58.907? INFO 23945 --- [a-EvictionTimer] c.n.e.registry.AbstractInstanceRegistry? : Running the evict task with compensationTime 0ms
2019-06-13 18:09:42.160? INFO 23945 --- [hresholdUpdater] c.n.e.r.PeerAwareInstanceRegistryImpl??? : Current renewal threshold is : 102
2019-06-13 18:09:58.907? INFO 23945 --- [a-EvictionTimer] c.n.e.registry.AbstractInstanceRegistry? : Running the evict task with compensationTime 0ms
2019-06-13 18:10:19.760? INFO 23945 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver????? : Resolving eureka endpoints via configuration
這個其實就是找不到報錯了找不到相應的url所致,可以設置com.ibm.ws.webcontainer.invokeFlushAfterService為false,關閉此日志。
網上也有說可以增加如下依賴解決關閉日志,沒試過,此處只記錄一下。
org.springframework.boot
spring-boot-starter-thymeleaf
${spring.boot.version}
net.sourceforge.nekohtml
nekohtml
1.9.22
微服務架構:Eureka集群搭建
版權聲明:本文為博主原創文章,轉載請注明出處,歡迎交流學習! 服務注冊.發現是微服務架構的關鍵原理之一,由于微服務架構是由一系列職責單一的細粒度服務構成的網狀結構,服務之間通過輕量機制進行通信,這就必 ...
Eureka集群搭建
服務注冊.發現是微服務架構的關鍵原理之一,由于微服務架構是由一系列職責單一的細粒度服務構成的網狀結構,服務之間通過輕量機制進行通信,這就必然引入一個服務注冊發現的問題,也就是說服務提供方要注冊報告服務 ...
基于dns搭建eureka集群
eureka集群方案: 1.通常我們部署的eureka節點多于兩個,根據實際需求,只需要將相鄰節點進行相互注冊(eureka節點形成環狀),就達到了高可用性集群,任何一個eureka節點掛掉不會受到影 ...
eureka集群基于DNS配置方式
https://www.cnblogs.com/relinson/p/eureka_ha_use_dns.html ? 最近在研究spring cloud eureka集群配置的時候碰到問題:多臺eu ...
eureka集群的兩種配置方式:配置文件方式與DNS方式
eureka client獲取serviceUrls(eureka server地址)列表的過程: 1. 根據use-dns-for-fetching-service-urls屬性判斷是從dns還是從 ...
SpringCloud之Eureka集群
前面我們介紹了SpringCloud注冊中心Eureka,但是存在一個單點故障的問題,一個注冊中心遠遠不能滿足實際的生產環境,現在我們介紹一下如何搭建一個Eureka集群. 一:集群環境搭建 我們先建 ...
eureka集群高可用配置
譬如eureka.client.register-with-eureka和fetch-registry是否要配置,配不配區別在哪里:eureka的客戶端添加service-url時,是不是需要把所有的 ...
Eureka集群試驗的一點總結
先簡單描述一下試驗: 試驗在一臺機器上進行,假設有host文件中配置了以下內容 127.0.0.1 left 127.0.0.1 center 127.0.0.1 right 試驗中搭建三個注冊中心實 ...
Cloudera Manager 安裝集群遇到的坑
Cloudera Manager 安裝集群遇到的坑 多次安裝集群,但每次都不能順利,都會遇到很多很多的坑,今天就過去踩過的坑簡單的總結一下,希望已經踩了的和正在踩的童鞋能夠借鑒一下,希望對你們能有所幫 ...
隨機推薦
寫出易調試的SQL(修訂版)
h4 { background: #698B22 !important; color: #FFFFFF; font-family: "微軟雅黑", "宋體", ...
一起寫一個JSON解析器
[本篇博文會介紹JSON解析的原理與實現,并一步一步寫出來一個簡單但實用的JSON解析器,項目地址:SimpleJSON.希望通過這篇博文,能讓我們以后與JSON打交道時更加得心應手.由于個人水平有限 ...
iOS開發UI篇—使用storyboard創建導航控制器以及控制器的生命周期
iOS開發UI篇—使用storyboard創建導航控制器以及控制器的生命周期 一.基本過程 新建一個項目,系統默認的主控制器繼承自UIViewController,把主控制器兩個文件刪掉. 在stor ...
Func系列2:常用模塊及API
簡介 Func提供了非常豐富的功能模塊,包括CommandModule(執行命令).CopyFileModule(拷貝文件).CPUModule(CPU信息).DiskModule(磁盤信息).Fil ...
從MVC到前后端分離
摘要:MVC模式早在上個世紀70年代就誕生了,直到今天它依然存在,可見生命力相當之強.MVC模式最早用于Smalltalk語言中,最后在其它許多開發語言中都得到了很好的應用,例如,Java中的Stru ...
搭建rtmp直播流服務之3:java開發ffmpeg實現rtsp轉rtmp并實現ffmpeg命令的接口化管理架構設計及代碼實現
上一篇文章簡單介紹了java如何調用ffmpeg的命令:http://blog.csdn.net/eguid_1/article/details/51777716 上上一篇介紹了nginx-rtmp服 ...
css百分比參照大總結
最近做PC端項目,由于要自適應到800*600,所以免不了要使用百分比的布局方式,但是一開始有點搞不清楚百分比的參照,于是頁面的布局怎么調也調不好. 事后我進行了一下總結,希望能夠幫到大家: 參照父元 ...
Java boolean類型
有關java boolean類型的定義: The boolean data type has only two possible values: true and false. Use this da ...
在linux系統中出現u盤問題 的相關解決方法
1.顯示unknown filesystem type .exfat 可以通過該方法解決: 安裝exfat-fuse: 在終端中以管理員身份運行 sudo apt-get install exfat- ...
android:layout_margin真實含義 及 自己定義復合控件 layout()運行無效的問題解決
一.關于layout_margin 搞Android時間也不短了.對layout_margin也不陌生了,可近期遇到一個問題讓我發現,對它的認識還不夠深入全面.大量網絡資料上都說,layout_mar ...
總結
以上是生活随笔為你收集整理的eureka 集群失败的原因_Eureka集群的那些坑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux上安装python2.6.9_
- 下一篇: Linux导出函数控制,linux 下仅