自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

天天 debug

师傅领进门 修行靠个人

  • 博客(32)
  • 收藏
  • 关注

原创 Docker Swarm 报 Error response from daemon: rpc error: code = 4 desc = context deadline exceeded

问题:Docker集群重启之后,使用 docker node ls 查看节点时,报 "Error response from daemon: rpc error: code = 4 desc = context deadline exceeded" 的错误。之前的集群配置如下:解决步骤:1、查看当前docker的输出的日志文件,Jun 30 10:55:33 Docker1 dockerd-cur...

2018-06-30 11:21:07 24689 1

转载 docker save与docker export的区别

缘起docker save和docker export都能导出镜像包,咋看起来区别似乎不大。本文就针对这个问题,试图搞清楚docker save和docker export的功能是什么?适用于什么应用场景?本文的测试的Docker版本如下,不保证所有版本的docker都能重现本文的结果。>docker versionClient: Version: 17.07.0-ce-rc...

2018-06-21 21:54:19 5077 2

原创 OpenShift 数据持久化

容器的一个特点是当容器退出后,其内部所有的数据和状态就会丢失。对于无状态应用来说这不是问题,但对于有状态的应用来说则是重要数据丢失的重大问题。OpenShift中为了满足数据持久化需求,采用了 kubernates 的 persistence volume 框架,在 kubenates 中的这个 persistence volume 子系统则为集群用户和管理员提供了一套API,这套API对底层的持...

2018-05-28 22:06:53 2803

原创 OpenShift Metrics(监控)部署

OpenShift Metrics(监控)采用Kubernetes原生的kubelet api提供数据,然后使用 heapster进行收集存储到cassandra数据库中,这些监控数据最主要是用来进行 pad autoscalers。一、准备工作先在Master节点上安装1.8版本的JDK,并将其添加到PATH环境变量中。二、切换项目到 openshift-infra[root@ocp ~]# o...

2018-05-28 22:01:28 3479

原创 OpenShift 健康检查

一、健康检查方式在OpenShift的Deployment Config中,用户可以定义两种健康检查方式:Readiness Probe:检查应用是否已经就绪(原因是当应用刚刚开始启动的时候,应用需要进行其所依赖资源的准备工作,列如 加载class、获得数据库连接 等等),OpenShift通过检查Readiness Probe接口,只有在确认服务就绪后,才会将外界的流量转发至服务。如果检测失败之...

2018-05-25 23:22:00 1976

原创 OpenShift 弹性伸缩 Replication Controller

RC(Replication Controller),复制控制器,其是Kubernetes的一个组件,主要是负责监控容器数量,当发现容器数量少于部署定义数量时,出发新的部署请求。在OpenShift中,每个应用的Deployment Config 中都定义了部署容器数量(Replicas),当OpenShift在进行部署的时候同时会启动一个Replication Controller,并将Depl...

2018-05-25 22:18:14 1216

原创 OpenShift 3.9 多节点集群(Ansible)安装

OpenShift集群的部署可以分为以下几个阶段:1、主机环境准备:准备OpenShift集群需要的主机,并进行集群环境准备。2、安装依赖包:提前安装使用Ansible安装OpenShift集群所依赖的第三方包。3、Ansible执行安装:使用Ansible Playbook进行自动化安装。4、OpenShift系统配置:在使用Ansible执行安装完成之后的系统配置。5、测试...

2018-05-24 21:19:16 9683 2

原创 缓存失效问题及解决方案

问题:某个时间点内,系统预加载的缓存周期性集中失效了。解决方法:可以通过设置不同的过期时间,来错开缓存过期,从而避免缓存集中失效。

2018-05-21 09:49:47 1724

原创 缓存穿透问题及解决方案

缓存穿透也被称为“击穿”。很多朋友对缓存穿透的理解是:由于缓存故障或者缓存过期导致大量请求穿透到后端数据库服务器,从而对数据库造成巨大冲击。这其实是一种误解。真正的缓存穿透应该是这样的:    在高并发场景下,如果某一个key被高并发访问,没有被命中,出于对容错性考虑,会尝试去从后端数据库中获取,从而导致了大量请求达到数据库,而当该key对应的数据本身就是空的情况下,这就导致数据库中并发的去执行了...

2018-05-21 09:49:06 5797

原创 缓存雪崩问题及处理方案

一、什么是缓存雪崩缓存雪崩就是指缓存由于某些原因(比如 宕机、cache服务挂了或者不响应)整体crash掉了,导致大量请求到达后端数据库,从而导致数据库崩溃,整个系统崩溃,发生灾难。下面的就是一个雪崩的简单过程:1、redis集群彻底崩溃2、缓存服务大量对redis的请求hang住,占用资源3、缓存服务大量的请求打到源头服务去查询mysql,直接打死mysql4、源头服务因为mysql被打死也崩...

2018-05-21 09:41:30 20067 1

原创 十一、Hystrix Dashboard+Turbine

除了隔离依赖服务的调用外,Hystrix还提供了近乎实时的监控,Hystrix会实时的,累加的记录所有关于HystrixCommand的执行信息,包括执行了每秒执行了多少请求,多少成功,多少失败等等,更多指标请查看:https://github.com/Netflix/Hystrix/wiki/Metrics-and-Monitoring导出监控数据有了这些指标,Netflix还提供了一个类库(h...

2018-05-20 08:16:00 467

原创 十、Hystrix 参数详解

Hystrix属性优先级1、内置全局默认值(Global default from code),默认值如果某属性未通过下面的任何方式进行设置,则默认使用内置全局默认值。2、动态全局默认属性(Dynamic global default property),默认属性可以通过此方式来更改某属性的全局默认值。3、内置实例默认值(Instance default from code),实例默认可以在写代码...

2018-05-19 18:43:35 2580

原创 九、Hystrix线程池

Hystrix把服务调用统称为依赖调用,Hystrix通过命令模式封装依赖调用,每一个依赖调用封装在HystrixCommand中,每个命令在Hystrix的线程池中运行。另外可以对其配置分组名、线程组,使得不同的依赖可以分类在不同的线程组,隔离不同模块的依赖,也可根据负载情况,配置不同组的线程数。命令名称HystrixCommandKeyHystrixCommand的名字,比如可以是某远程服务名...

2018-05-19 18:41:55 766

原创 八、Hystrix 工作流程解析

Hystrix内部存在一套精细、高效和简洁的流程,该流程为实现hystrix的服务降级、故障隔离、访问限流和对被依赖服务运行信息的维护奠定了坚实的基础。Hystrix整体工作流程hystrix整个工作流程涉及到熔断器、缓冲、线程池等组件。这些组件分别实现了故障隔离、访问合并、服务降级和访问限流等功能,正是这些组件高效密切的配合确保了服务的稳定运行。下面是hystrix的整体工作流程图:整个流程可以...

2018-05-19 18:40:43 785

原创 七、Hystrix请求合并(request collapser)

Hystrix支持N个请求自动合并为一个请求,这个功能在有网络交互的场景下尤其有用,比如每个请求都要网络访问远程资源,如果把请求合并为一个,将使多次网络交互变成一次,极大节省开销。请求合并有很多种级别:1、Global Context,tomcat所有调用线程,对一个依赖服务的任何一个command调用都可以被合并在一起。2、User Request Context,tomcat内某一个调用线程,...

2018-05-19 18:38:55 766

原创 六、Hystrix请求缓存(request cache)

Hystrix支持将一个请求结果缓存起来,在同一个请求上下文中,具有相同key的请求将直接从缓存中取出结果,很适合查询类的接口,可以使用缓存进行优化,减少请求开销,从而跳过真实服务的访问请求。Hystrix请求结果缓存的作用:1、在同一个请求上下文中,可以减少使用相同参数请求原始服务的开销。3、请求缓存在 run() 和 construct() 执行之前生效,所以可以有效减少不必要的线程开销。要使...

2018-05-19 18:38:19 749

原创 五、Hystrix特性之降级

Fallback相当于是降级操作。所谓降级,就是指在Hystrix执行非核心链路功能失败的情况下,该如何处理,比如返回默认值或者从缓存中取值。触发降级的情况1、hystrix调用各种接口,或者访问外部依赖(如mysql、redis等等)时,执行方法中抛出了异常。2、对每个外部依赖,无论是服务接口,中间件,资源隔离,对外部依赖只能用一定量的资源去访问,线程池/信号量,如果资源池已满,则后续的请求将会...

2018-05-19 18:37:47 864

原创 四、Hystrix特性之熔断

熔断器(CircuitBreaker)熔断器的原理很简单,如同电力过载保护器。它可以实现快速失败,如果它在一段时间内侦测到许多类似的错误,会强迫其以后的多个调用快速失败,不再访问远程服务器,从而防止应用程序不断地尝试执行可能会失败的操作,使得应用程序继续执行而不用等待修正错误,或者浪费CPU时间去等到长时间的超时产生。熔断器也可以使应用程序能够诊断错误是否已经修正,如果已经修正,应用程序会再次尝试...

2018-05-19 18:35:49 656

原创 三、Hystrix特性之限流

限流在日常生活中很常见,比如节假日你去一个旅游景点,为了不把景点撑爆,管理部门通常会在外面设置拦截,限制景点的进入人数(等有人出来之后,再放新的人进去)。对应到计算机中,比如要搞活动、秒杀等,通常都会限流。在Hystrix中:1、如果是线程隔离,可以通过线程数+队列大小限制。参数如下:hystrix.threadpool.default.coreSizehystrix.threadpool.def...

2018-05-19 18:34:48 7182

原创 二、Hystrix特性之资源隔离

在一个分布式系统中,服务之间都是相互调用的,比如,商品详情展示服务会依赖商品服务,价格服务,商品评论服务,如下图所示:调用三个依赖服务会共享商品详情服务的线程池,如果其中的商品评论服务因不可用导致线程阻塞,这个时候后续的大量商品详情请求过来了,那么线程池里所有线程都因等待响应而被阻塞,整个商品详情服务对外不可用,从而造成服务雪崩,如图所示:一、资源隔离之线程隔离1、简介货船为了进行防止漏水和火灾的...

2018-05-19 18:33:38 977

原创 一、Hystrix 简介

在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC) 。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服...

2018-05-19 18:30:15 6422

转载 数据库与缓存双写不一致问题分析与解决方案设计

一、说明根据 Cloud Design Patterns 一书中关于缓存模式的 Cache Aside Pattern 说明,其主要内容总结如下:读取的时候,先读取缓存,如果缓存中没有,就直接从数据库中读取,然后取出数据后放入缓存更新的时候,先删除缓存,再更新数据库二、数据库与缓存读写模式策略写完数据库后是否需要立即更新缓存还是直接删除缓存?(1)、如果写数据库的内容与更新到缓存中的内容是一样的,...

2018-04-26 17:18:52 4479

转载 java bitmap/bitvector的分析和应用

简介    bitmap在很多海量数据处理的情况下会用到。一些典型的情况包括数据过滤,数据位设置和统计等。 它的引入和应用通常是考虑到海量数据的情况下,用普通的数组会超出数据保存的范围。使用这种位图的方式虽然不能在根本上解决海量数据处理的问题,但是在一定的数据范围内,它是一种有效的方法。bitmap在java的类库里有一个对应的实现:BitSet。我们会对bitmap的引入做一个介绍,然后详细分析...

2018-04-25 18:22:28 618

原创 "Spark 1.6 + Alluxio 1.2 HA + OFF_HEAP" 的配置

1、到 https://github.com/winse/spark-alluxio-blockstorage 下载 AlluxioBlockManager.scala 文件,并进行编译打包为 spark-alluxio-blockstore.jar2、将alluxio-core-client-spark-1.2.0-jar-with-dependencies.jar、 spark-all

2016-08-20 18:54:47 1140 2

原创 Alluxio 1.2.0 HA 问题集合

一、问题之 last execution took xxxx ms. Longer than the interval xxx集群情况如下: hdfs-yarn-1;IP地址:192.168.1.151;服务:Master & Worker & Zookeeper hdfs-yarn-2;IP地址:192.168.1.152;服务:Master & Worker hdfs-yarn-3;IP地

2016-08-20 11:28:05 1335

原创 "Spark 1.6 + Alluxio 1.2 + OFF_HEAP" 的配置

我们知道,Spark + Tachyon 可以解决 Spark 在使用过程中的一些问题,可以总结为 数据共享 和 GC 等问题。 但是呢,Tachyon 在今年已经更名为 Alluxio,并且其访问schema也从tachyon修改为alluxio;Spark 1.6 的版本也在维护中;可是,到目前为止,Spark还没有将之前的 Tachyon 的协议修改为 Alluxio 的协议,因此 Allu

2016-08-16 00:23:13 560

原创 Spark Streaming + Kafka Manager + (Kafka-spark-consumer) 组合

在之前的文章中提到了,使用 Spark Streaming + Kafka-spark-consumer 来应对Driver程序代码改变,无法从checkpoint中反序列化的问题,即其会自动将kafka的topic中,每个partition的消费offset写入到zookeeper中,当应用重新启动的时候,其可以直接从zookeeper中恢复,但是其也存在一个问题就是:Kafka Manager

2016-08-07 11:26:41 783

原创 Alluxio(Tachyon) 集群独立运行模式安装遇到的问题(非root用户)

1、如果启动报sudo相关命令错误,是因为启动用户未在sudoers里面,需要将用户添加到此文件中,添加方法搜下root位置,再后面添加即可。内容如下:root ALL=(ALL) ALLhadoop ALL=(ALL) ALL同时把此文件中的:#Defaults    requiretty 注释掉。2、经

2016-08-07 00:26:45 2597 2

原创 Spark Streaming + Kafka 另一利器 Kafka-spark-consumer 项目

在之前的文章中,曾经提到了,如何在使用 Kafka Direct API 处理消费时,将每个Partition的offset写到Zookeeper中,并且在应用重新启动或者应用升级时,可以通过读取Zookeeper中的offset恢复之前的处理位置,进而继续工作。而本篇文章则将要介绍另外一个 Spark Streaming + Kafka 的利器 – Kafka-spark-consumer 项目。

2016-08-04 23:34:56 1773 2

原创 Spark Streaming + Kafka direct 从Zookeeper中恢复offset

在上一遍《将 Spark Streaming + Kafka direct 的 offset 保存进入Zookeeper》中,我们已经成功的将 topic 的 partition 的 offset 保存到了 Zookeeper中,使监控工具发挥了其监控效果。那现在是时候来处理《“Spark Streaming + Kafka direct + checkpoints + 代码改变” 引发的问题》中提

2016-08-02 23:01:18 5171 3

原创 将 Spark Streaming + Kafka direct 的 offset 保存进入Zookeeper

在上一遍《“Spark Streaming + Kafka direct + checkpoints + 代码改变” 引发的问题》中说到,当时是将 topic 的 partition 的 offset 保存到了 MySQL 数据库中,其存在一个问题,就是无法在现有的监控工具中进行体现(如:Kafka Manager)。那我们现在就来将此offset保存到zookeeper中,从而使用监控工具发挥其效

2016-08-01 22:34:57 3886 6

原创 "Spark Streaming + Kafka direct + checkpoints + 代码改变" 引发的问题

“Spark Streaming + Kafka direct + checkpoints + 代码改变” 引发的问题Spark Streaming 从Kafka中接收数据,其有两种方法:(1)、使用Receivers和Kafka高层次的API;(2)、使用 Direct API,这是使用低层次的Kafka API,并没有使用到Receivers,是Spark1.3.0中开始引入。由于本篇文章使用的

2016-07-31 19:09:32 5264 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除