<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[天天 debug]]></title><description><![CDATA[师傅领进门 修行靠个人]]></description><link>https://blog.youkuaiyun.com/sun_qiangwei</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sun_qiangwei]]></copyright><item><title><![CDATA[Docker Swarm 报 Error response from daemon: rpc error: code = 4 desc = context deadline exceeded]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80864751</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80864751</guid><author>sun_qiangwei</author><pubDate>Sat, 30 Jun 2018 11:21:07 +0800</pubDate><description><![CDATA[问题：Docker集群重启之后，使用 docker node ls 查看节点时，报 &quot;Error response from daemon: rpc error: code = 4 desc = context deadline exceeded&quot; 的错误。之前的集群配置如下：解决步骤：1、查看当前docker的输出的日志文件，Jun 30 10:55:33 Docker1 dockerd-cur...]]></description><category></category></item><item><title><![CDATA[docker save与docker export的区别]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80766800</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80766800</guid><author>sun_qiangwei</author><pubDate>Thu, 21 Jun 2018 21:54:19 +0800</pubDate><description><![CDATA[缘起docker save和docker export都能导出镜像包，咋看起来区别似乎不大。本文就针对这个问题，试图搞清楚docker save和docker export的功能是什么？适用于什么应用场景？本文的测试的Docker版本如下，不保证所有版本的docker都能重现本文的结果。&amp;gt;docker version

Client:
 Version:      17.07.0-ce-rc...]]></description><category></category></item><item><title><![CDATA[OpenShift 数据持久化]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80489487</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80489487</guid><author>sun_qiangwei</author><pubDate>Mon, 28 May 2018 22:06:53 +0800</pubDate><description><![CDATA[容器的一个特点是当容器退出后，其内部所有的数据和状态就会丢失。对于无状态应用来说这不是问题，但对于有状态的应用来说则是重要数据丢失的重大问题。OpenShift中为了满足数据持久化需求，采用了 kubernates 的 persistence volume 框架，在 kubenates 中的这个 persistence volume 子系统则为集群用户和管理员提供了一套API，这套API对底层的持...]]></description><category></category></item><item><title><![CDATA[OpenShift Metrics（监控）部署]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80489450</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80489450</guid><author>sun_qiangwei</author><pubDate>Mon, 28 May 2018 22:01:28 +0800</pubDate><description><![CDATA[OpenShift Metrics（监控）采用Kubernetes原生的kubelet api提供数据，然后使用 heapster进行收集存储到cassandra数据库中，这些监控数据最主要是用来进行 pad autoscalers。一、准备工作先在Master节点上安装1.8版本的JDK，并将其添加到PATH环境变量中。二、切换项目到 openshift-infra[root@ocp ~]# o...]]></description><category></category></item><item><title><![CDATA[OpenShift 健康检查]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80458080</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80458080</guid><author>sun_qiangwei</author><pubDate>Fri, 25 May 2018 23:22:00 +0800</pubDate><description><![CDATA[一、健康检查方式在OpenShift的Deployment Config中，用户可以定义两种健康检查方式：Readiness Probe：检查应用是否已经就绪（原因是当应用刚刚开始启动的时候，应用需要进行其所依赖资源的准备工作，列如 加载class、获得数据库连接 等等），OpenShift通过检查Readiness Probe接口，只有在确认服务就绪后，才会将外界的流量转发至服务。如果检测失败之...]]></description><category></category></item><item><title><![CDATA[OpenShift 弹性伸缩 Replication Controller]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80457532</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80457532</guid><author>sun_qiangwei</author><pubDate>Fri, 25 May 2018 22:18:14 +0800</pubDate><description><![CDATA[RC（Replication Controller），复制控制器，其是Kubernetes的一个组件，主要是负责监控容器数量，当发现容器数量少于部署定义数量时，出发新的部署请求。在OpenShift中，每个应用的Deployment Config 中都定义了部署容器数量（Replicas），当OpenShift在进行部署的时候同时会启动一个Replication Controller，并将Depl...]]></description><category></category></item><item><title><![CDATA[OpenShift 3.9 多节点集群（Ansible）安装]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80443943</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80443943</guid><author>sun_qiangwei</author><pubDate>Thu, 24 May 2018 21:19:16 +0800</pubDate><description><![CDATA[OpenShift集群的部署可以分为以下几个阶段：

1、主机环境准备：准备OpenShift集群需要的主机，并进行集群环境准备。

2、安装依赖包：提前安装使用Ansible安装OpenShift集群所依赖的第三方包。

3、Ansible执行安装：使用Ansible Playbook进行自动化安装。

4、OpenShift系统配置：在使用Ansible执行安装完成之后的系统配置。

5、测试...]]></description><category></category></item><item><title><![CDATA[缓存失效问题及解决方案]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80388343</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80388343</guid><author>sun_qiangwei</author><pubDate>Mon, 21 May 2018 09:49:47 +0800</pubDate><description><![CDATA[问题：某个时间点内，系统预加载的缓存周期性集中失效了。解决方法：可以通过设置不同的过期时间，来错开缓存过期，从而避免缓存集中失效。]]></description><category></category></item><item><title><![CDATA[缓存穿透问题及解决方案]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80388318</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80388318</guid><author>sun_qiangwei</author><pubDate>Mon, 21 May 2018 09:49:06 +0800</pubDate><description><![CDATA[缓存穿透也被称为“击穿”。很多朋友对缓存穿透的理解是：由于缓存故障或者缓存过期导致大量请求穿透到后端数据库服务器，从而对数据库造成巨大冲击。这其实是一种误解。真正的缓存穿透应该是这样的：    在高并发场景下，如果某一个key被高并发访问，没有被命中，出于对容错性考虑，会尝试去从后端数据库中获取，从而导致了大量请求达到数据库，而当该key对应的数据本身就是空的情况下，这就导致数据库中并发的去执行了...]]></description><category></category></item><item><title><![CDATA[缓存雪崩问题及处理方案]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80388210</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80388210</guid><author>sun_qiangwei</author><pubDate>Mon, 21 May 2018 09:41:30 +0800</pubDate><description><![CDATA[一、什么是缓存雪崩缓存雪崩就是指缓存由于某些原因（比如 宕机、cache服务挂了或者不响应）整体crash掉了，导致大量请求到达后端数据库，从而导致数据库崩溃，整个系统崩溃，发生灾难。下面的就是一个雪崩的简单过程：1、redis集群彻底崩溃2、缓存服务大量对redis的请求hang住，占用资源3、缓存服务大量的请求打到源头服务去查询mysql，直接打死mysql4、源头服务因为mysql被打死也崩...]]></description><category></category></item><item><title><![CDATA[十一、Hystrix Dashboard+Turbine]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376804</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376804</guid><author>sun_qiangwei</author><pubDate>Sun, 20 May 2018 08:16:00 +0800</pubDate><description><![CDATA[除了隔离依赖服务的调用外，Hystrix还提供了近乎实时的监控，Hystrix会实时的，累加的记录所有关于HystrixCommand的执行信息，包括执行了每秒执行了多少请求，多少成功，多少失败等等，更多指标请查看：https://github.com/Netflix/Hystrix/wiki/Metrics-and-Monitoring导出监控数据有了这些指标，Netflix还提供了一个类库（h...]]></description><category></category></item><item><title><![CDATA[十、Hystrix 参数详解]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376791</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376791</guid><author>sun_qiangwei</author><pubDate>Sat, 19 May 2018 18:43:35 +0800</pubDate><description><![CDATA[Hystrix属性优先级1、内置全局默认值（Global default from code），默认值如果某属性未通过下面的任何方式进行设置，则默认使用内置全局默认值。2、动态全局默认属性（Dynamic global default property），默认属性可以通过此方式来更改某属性的全局默认值。3、内置实例默认值（Instance default from code），实例默认可以在写代码...]]></description><category></category></item><item><title><![CDATA[九、Hystrix线程池]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376781</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376781</guid><author>sun_qiangwei</author><pubDate>Sat, 19 May 2018 18:41:55 +0800</pubDate><description><![CDATA[Hystrix把服务调用统称为依赖调用，Hystrix通过命令模式封装依赖调用，每一个依赖调用封装在HystrixCommand中，每个命令在Hystrix的线程池中运行。另外可以对其配置分组名、线程组，使得不同的依赖可以分类在不同的线程组，隔离不同模块的依赖，也可根据负载情况，配置不同组的线程数。命令名称HystrixCommandKeyHystrixCommand的名字，比如可以是某远程服务名...]]></description><category></category></item><item><title><![CDATA[八、Hystrix 工作流程解析]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376769</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376769</guid><author>sun_qiangwei</author><pubDate>Sat, 19 May 2018 18:40:43 +0800</pubDate><description><![CDATA[Hystrix内部存在一套精细、高效和简洁的流程，该流程为实现hystrix的服务降级、故障隔离、访问限流和对被依赖服务运行信息的维护奠定了坚实的基础。Hystrix整体工作流程hystrix整个工作流程涉及到熔断器、缓冲、线程池等组件。这些组件分别实现了故障隔离、访问合并、服务降级和访问限流等功能，正是这些组件高效密切的配合确保了服务的稳定运行。下面是hystrix的整体工作流程图：整个流程可以...]]></description><category></category></item><item><title><![CDATA[七、Hystrix请求合并（request collapser）]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376761</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376761</guid><author>sun_qiangwei</author><pubDate>Sat, 19 May 2018 18:38:55 +0800</pubDate><description><![CDATA[Hystrix支持N个请求自动合并为一个请求，这个功能在有网络交互的场景下尤其有用，比如每个请求都要网络访问远程资源，如果把请求合并为一个，将使多次网络交互变成一次，极大节省开销。请求合并有很多种级别：1、Global Context，tomcat所有调用线程，对一个依赖服务的任何一个command调用都可以被合并在一起。2、User Request Context，tomcat内某一个调用线程，...]]></description><category></category></item><item><title><![CDATA[六、Hystrix请求缓存（request cache）]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376756</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376756</guid><author>sun_qiangwei</author><pubDate>Sat, 19 May 2018 18:38:19 +0800</pubDate><description><![CDATA[Hystrix支持将一个请求结果缓存起来，在同一个请求上下文中，具有相同key的请求将直接从缓存中取出结果，很适合查询类的接口，可以使用缓存进行优化，减少请求开销，从而跳过真实服务的访问请求。Hystrix请求结果缓存的作用：1、在同一个请求上下文中，可以减少使用相同参数请求原始服务的开销。3、请求缓存在 run() 和 construct() 执行之前生效，所以可以有效减少不必要的线程开销。要使...]]></description><category></category></item><item><title><![CDATA[五、Hystrix特性之降级]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376734</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376734</guid><author>sun_qiangwei</author><pubDate>Sat, 19 May 2018 18:37:47 +0800</pubDate><description><![CDATA[Fallback相当于是降级操作。所谓降级，就是指在Hystrix执行非核心链路功能失败的情况下，该如何处理，比如返回默认值或者从缓存中取值。触发降级的情况1、hystrix调用各种接口，或者访问外部依赖（如mysql、redis等等）时，执行方法中抛出了异常。2、对每个外部依赖，无论是服务接口，中间件，资源隔离，对外部依赖只能用一定量的资源去访问，线程池/信号量，如果资源池已满，则后续的请求将会...]]></description><category></category></item><item><title><![CDATA[四、Hystrix特性之熔断]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376730</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376730</guid><author>sun_qiangwei</author><pubDate>Sat, 19 May 2018 18:35:49 +0800</pubDate><description><![CDATA[熔断器（CircuitBreaker）熔断器的原理很简单，如同电力过载保护器。它可以实现快速失败，如果它在一段时间内侦测到许多类似的错误，会强迫其以后的多个调用快速失败，不再访问远程服务器，从而防止应用程序不断地尝试执行可能会失败的操作，使得应用程序继续执行而不用等待修正错误，或者浪费CPU时间去等到长时间的超时产生。熔断器也可以使应用程序能够诊断错误是否已经修正，如果已经修正，应用程序会再次尝试...]]></description><category></category></item><item><title><![CDATA[三、Hystrix特性之限流]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376721</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376721</guid><author>sun_qiangwei</author><pubDate>Sat, 19 May 2018 18:34:48 +0800</pubDate><description><![CDATA[限流在日常生活中很常见，比如节假日你去一个旅游景点，为了不把景点撑爆，管理部门通常会在外面设置拦截，限制景点的进入人数（等有人出来之后，再放新的人进去）。对应到计算机中，比如要搞活动、秒杀等，通常都会限流。在Hystrix中：1、如果是线程隔离，可以通过线程数+队列大小限制。参数如下：hystrix.threadpool.default.coreSizehystrix.threadpool.def...]]></description><category></category></item><item><title><![CDATA[二、Hystrix特性之资源隔离]]></title><link>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376710</link><guid>https://blog.youkuaiyun.com/sun_qiangwei/article/details/80376710</guid><author>sun_qiangwei</author><pubDate>Sat, 19 May 2018 18:33:38 +0800</pubDate><description><![CDATA[在一个分布式系统中，服务之间都是相互调用的，比如，商品详情展示服务会依赖商品服务，价格服务，商品评论服务，如下图所示：调用三个依赖服务会共享商品详情服务的线程池，如果其中的商品评论服务因不可用导致线程阻塞，这个时候后续的大量商品详情请求过来了，那么线程池里所有线程都因等待响应而被阻塞，整个商品详情服务对外不可用，从而造成服务雪崩，如图所示：一、资源隔离之线程隔离1、简介货船为了进行防止漏水和火灾的...]]></description><category></category></item></channel></rss>