自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Spring Cloud2.X ——宏观视图

随着对微服务的的实践经验的增加,慢慢的对微服务有了一个宏观上的理解,简单整理一下;下面画了一张图,比较清晰的描绘了微服务组件的协作关系,以及微服务架构下面临的挑战; 服务注册 微服务架构下,服务的统一注册是前提,只有将所有服务集中注册起来按服务名称进行归类,提供统一的服务视图,才能更...

2019-05-12 14:18:57 132 0

原创 记一次高并发、大流量场景下的缓存、限流优化

目录 场景描述: 历史优化措施 可行性分析 硬件设备 流量分析 峰值预估【单个服务】 缓存预估 峰值流量处理 可行性方案 源端转发 分布式缓存 本地缓存 可行性实践 案例1 问题分析 基于Guava的本地缓存 基于Guava的令牌桶限流算法 参数配置 场景描述...

2019-05-12 14:10:53 210 0

原创 记一次JVM线程池配置不合理导致的JVM挂掉问题排查

原则一 ——尽一切可能保护有限的资源。 问题描述 现场反馈,服务启动起来有一段时间就自己挂掉了,大概几十秒到几分钟,技支反馈日志突然就中断了,看不到任何错误的迹象; 原因预估 我确信,经验不同的人排查问题的思路差异是非常大的,庆幸的是这些可以借鉴,我们应该总结自己的经验,借鉴旁人的经验;...

2019-05-12 13:13:34 488 0

原创 架构设计-数据接入服务

标签: 门面模式、观察者模式、责任链模式、模式组合 设计原则 流程清晰、责任明确、易于扩展、兼顾性能。 场景描述: 需要提供一个服务开发若干接口可以是REST或者WEBSERVICE实现,协议数据包含两大类数据内容结构化数据和图片数据。整个服务需要完成结构化数据的输入、...

2019-03-30 13:02:19 598 0

原创 Spring Boot +Mybatis多数据源配置

Spring Boot项目在整合Mybatis过程中全部使用了注解配置,由于业务系统涉及多个数据源,查阅后整理输出供需要的伙伴参考。 难点 由于全部使用@Mapper注解在接口中定义了DAO层逻辑,且在使用过程中直接使用@Autowired注入了该接口的代理对象,因此在有多个数据源的场景下在什...

2019-03-10 16:30:37 147 0

原创 QUARTZ基于SPARK LAUNCHER 驱动SPARK离线作业

场景:不同业务下输出了若干Spark的离线任务,原有的方式我们是基于Linux的CRON任务来驱动,不好进行监管、日志不好收集、服务不集中、难于管理、不好配置、资源调度不灵活。SparkLauncher 提供了编程方式提交Spark应用的方式提交Spark应用程序,可以结合Springboot、Q...

2018-12-21 16:19:48 848 0

原创 Springboot 整合druid数据源

为什么要用druid还没好好考虑,先用一下试试,这次用了Spring Boot环境,比较间接的整理一下一种配置的流程,总的来说我可以通过一个网站监控一下我的数据源的情况,这是其它数据源暂时都不能提供的优势,也是性能排查的利器。 创建durid数据源配置文件,这里使用application....

2018-06-16 09:58:13 333 0

原创 高性能分布式计数器中的并发设计和思考

高性能分布式计数器中的并发设计 场景介绍 对实时数据流以不同纬度进行计数并将结果保存到Oracle表中.要求达到以下目标: 实时性有要求,单并非是严格要求,根据数据量的大小可适当延迟 严格要求数据一致性,即在数据正确的情况下计数的结果应该和总记录数是一致的 服务是可扩展的,尽量避免...

2018-06-16 09:36:25 2075 0

原创 记一次从CPU使用率高到接口性能的排查过程

       两年前曾写过一个库代码,写这个库代码的时候也是咨询了各路大神们,也是由于自己技能储备不足,导致当时完成的也是小心翼翼,也是如期上线.       两年时间过去了,最近在排查该项目现场性能问题的时候猜测意是否由于当时的类库实现的不合理引起的。首先看下直接表现出来的问题。CPU用户进程C...

2018-06-09 14:31:21 1679 0

原创 关于Phoenix的一些学习引导

1.什么是Phoenix?    首先你得了解Hbase、使用过Hbase并对Hbase现有的Api操作方式感到困惑和不满,那么继续看下去才更有意义。Phoenix 是Hbase上的高层组件,是一个独立的开源项目,其基于Hbase的扫描操作和协处理器实现了一套底层基于Hbase表结构的标准SQL层...

2018-05-19 09:32:36 545 0

原创 Spark1.5.2写kafka数据到Elasticsearch入坑总结

概述:总结一下Spark1.5.2+Kafka 0.8+中使用Direct Approach(直接获取的方式)消费Kafka数据开发过程中遇到的各种问题和经验.整合Spring    Spark开发中引入Spring可以方便的管理配置信息,数据源等,借助于Scala的单例特性可以创建一个独立的加载...

2018-04-19 19:53:02 845 0

原创 SpringBoot 启动流程分析

用了Spring Boot有一段时间了,相比于Spring要理解它更难一些,在Spring boot中提出以下几个疑问Spring Boot的架构是如何设计的,能很轻松的整合很多开源组件。Spring Boot中资源如何加载,事件如何管理,什么时候可以对Spring Boot进行扩展[什么时候可以...

2018-04-01 17:23:21 1766 0

原创 Redis+Lua去服务单点优化

        Lua是一个脚本语言,使用C编写并开放源代码,主要是为了嵌入应用程序中,为应用提供扩展和定制。Lua语言这里不多提及,可阅读Lua官网http://www.lua.org/ 或者菜鸟教程了解(更容易一些)。这里重点介绍Lua在Redis中的应用,以一个简单的升级版的Redis去除服...

2018-03-25 08:29:59 355 0

原创 记一次FastDFS优化

问题描述         18个Strorage+1Tracker的线上环境,Stroage存储18T磁盘剩余空间平衡在97%左右.默认配置下频繁出现图片下载失败的情况,由于客户端代码使用了连接池,最终表现出连接资源不足.跟踪若干Storage日志偶尔有"send timeout&quo...

2018-03-20 19:56:49 4573 1

原创 Spark1.5.2日志配置&数据文件清理

本节讨论Spark Standalone Mode 模式下的日志配置及作用运行过程中的历史文件的清理,避免线上环境的不合理配置导致大量的遗留数据填满磁盘导致节点服务不可用的情况。日志文件Spark原生支持使用log4j配置文件,针对于Spark集群的log4j日志文件应该放置在SPARK_HOME...

2018-03-15 12:57:27 973 0

原创 Logstash入门实战

提问:现有一服务用于清理Elasticsearch中索引的文本数据,在这之前需要保证将记录中关联的几张图片也删除掉才能将该条记录完全删除,由于删除图片采用RPC部署的多个删除服务来完成,网络故障自然无法避免,同时对于Elasticsearch数据抓取采用Scroll API以减轻对Elastics...

2018-03-11 13:39:52 1580 0

原创 记一次Phoenix写入优化

场景描述 现有大量CSV格式的数据记录存储在HDFS中,需要批量索引到Hbase以便于数据查询。限于Hbase的主键索引以及使用Hbase API的诸多不方便,最后采用了Phoenix+Hbase的技术架构。基于此方案数据的索引可通过Phoenix的SQL API、Spark RDD插件、以及P...

2018-01-21 20:23:05 4532 0

原创 Redis、Zookeeper去服务单点问题实践

常见的单个服务要要完成某个核心功能,由于设计原因该服务智能部署一个不支持多个同时运行,一方面在服务可运行的情况下要在运维人员意外的启动多个服务节点的情况下服务仍然能够正常运行,另外单个节点运行的服务在主机发生故障的时候难免导致服务意外终止,这种场景下我们更希望采用一种更优雅的方式不中断服务。以下以...

2017-12-03 16:30:09 1139 0

原创 Apche Avro 实现RPC调用

流行的序列化框架有很多,常见的 Avro、Hessian、Protostuff、Thrift等,致力解决各种场景的数据序列化提高程序运行效率,基于现有的序列化行为不同的序列化协议不同程度的实现了消息协议进而提供了基础的RPC程序调用。通常应用程序的开发都是基于RPC层面进行,大大简化了跨进程通信的...

2017-12-03 15:24:46 732 0

原创 Hessian 实现RPC调用

http,webservice等web服务实现RPC大都使用文本协议进行数据传输,弊端在于使用文本进行数据传输浪费了部分网络带宽,尤其在传输大量的可通过编码压缩的数据时其性能有很大的可提升空间,通过对RPC传输的数据进行必要的编码能降低服务负载和网络IO开销,提高系统整体性能。 Hession是...

2017-12-03 10:32:57 784 0

原创 Apache Hive 入门

概述          HDFS被设计用于存储大量的数据,被存储在HDFS中的各样的文件面临数据分析以挖掘其价值的挑战,HDFS上层现支持多种进行数据分析和处理的架构总结如下: 1.        基于传统的MR来进行数据的处理,由研发人员编程实现.Hadoop MapReduce为代表 2.  ...

2017-07-30 18:34:41 303 0

原创 Apache Sqoop 入门

概述        随着业务数据的不断积累,传统的关系数据库面临大量数据的挑战,此时将数据导入廉价且安全性较高的NOSQL数据库中显得越有必要。面临类似的业务场景工程师们自然会通过编程来实现数据的导入导出,这样提供一个通用的比较完善的工具有显得有必要了,Apache Sqoop即是 场景举例 ...

2017-07-25 20:20:46 241 0

原创 Apache Phoenix 入门

Apache Phoenix 入门 概述 Hbase适合存储大量的对关系运算要求低的NOSQL数据,受Hbase 设计上的限制不能直接使用原生的PAI执行在关系数据库中普遍使用的条件判断和聚合等操作。Hbase很优秀,一些团队寻求在Hbase之上提供一种更面向普通开发人员的操作方式,Apach...

2017-07-23 15:03:09 5528 0

原创 Apache Kafka源码分析-客户端请求响应模型

从源码角度分析一下Kaka响应客户端的流程总体上看是一个 1-M-N的请求响应模型,如图1-1所示,下做简述: Kafka使用ServerSocketChannel + Java NIO 非阻塞的方式来响应客户端请求 Kafka由一个Acceptor线程负责将来自于不同客户端的请求分发给多个Pr...

2017-07-01 18:03:48 960 0

原创 Apache Kafka源码分析-模块简介

Apache Kafka源码分析-模块简介 1        概述 一个开源分布式发布订阅消息系统,基于对磁盘文件的顺序存取实现在廉价硬件基础上提供高吞吐量、易扩展、随机消费等特点已被广泛使用。 2        目的        以源码入手对Kafka架构有比较深入的了解,不会展开具体...

2017-06-25 16:19:51 344 0

原创 Spark 架构-初识

前言:一直想总结关于Spark架构方面的知识,限于所学,到目前也只是浅尝辄止,一方面受限于自我架构意识的欠缺,其次受限于对Scala语言的理解,总之还在不断的探索,实践,和总结中. 本小结简单阐述下笔者现阶段对Spark 的了解,为后续进一步的深入学习做一些准备,而更多的是思想上的理解,而不是细节...

2017-04-03 15:01:19 300 0

原创 Hadoop2.X MR作业流

Hadoop2.X MR作业流 情景概述:作为HFDS的高层建筑,MR被设计与在大型分布式文件系统之上的离线数据运算,在对一些运算时效性要求不高的场景中更适合于MR作业,MR在ETL流不同阶段可扮演不同的角色,甚至在某些场景下基于MR的链式操作可完成ETL的整个流程. MR概述:Hadoop ...

2017-04-02 18:49:44 855 0

原创 Hadoop2.x YARN架构

Hadoop 2.X YARN架构 概述:Hadoop2.X 摒弃了1.X中JobTracker扮演的资源调度角色,改用具有更具通用性的YARN 资源管理框架,而YARN本身更是开源集群资源管理的典范. 资源调度: |  切割资源管理和作业调度,监控到不同的守护进程中[daemons],Y...

2017-04-02 16:51:03 345 0

原创 Hadoop2.X HDFS架构

概述:DHFS是一个基于廉价硬件基础设施的高度容错性的分布式文件系统.HDFS由Apache Nutch项目演化而来.现阶段HDFS作为大数据存储解决方案,拥有众多的受益企业和个人,学习势在必行.   HDFS目标: |  硬件故障是常态.对应快速故障恢复和转移. |  流式数据接收,高吞...

2017-04-02 15:45:00 1789 0

原创 Hadoop 2.8.0集群环境搭建_HDFS阶段

围绕Hadoop而形成的生态圈中Hadoop扮演了重要的角色,学习大数据Hadoop自然是必经之路,本节基于Hadoop官方文档简述Hadoop 集群环境的搭建,单机版,伪分布式可自行参考文档.建议准备至少五台物理机或者虚拟机,且能够互相通信.在此之前建议不熟悉网络防火墙的朋友自行关闭防火墙,避免...

2017-03-30 21:21:14 699 0

原创 Zookeeper 集群环境搭建

参考官方文档,基于ZK3.4.9  ,JDK1.8, CENTOS 7 下载ZK 安装包,http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz   推荐迅雷下载集群环境,准备至少三台的奇数个CentOS主...

2017-03-28 07:45:27 311 0

原创 Spark + Kafka 集成 指南

最近在考虑Spark在消费Kafka 分区数据的过程中究竟反生了什么? 因为比较疑惑现有系统架构会不会遭遇这方面的瓶颈,遂决定去搞一把,一探究竟. 参考:Spark  API章节 http://spark.apache.org/docs/1.5.0/streaming-kafka-integra...

2017-03-19 13:44:54 4077 0

原创 Spring Boot Admin UI 分布式微服务监控中心

完整的微服务解决方案应该包含了微服务所涉及的方方面面,从服务的集中式配置,注册中心,断路器,负载均衡,监控 等模块之后面临的一个问题是如何直观的将微服务集群中的各个服务的状态显示给对"CODE"没有感觉的用户来使用.这当让是生产环境中所必要的,尤其对运维人员来说. 幸运的是S...

2017-03-19 08:34:56 28822 0

原创 Spring Cloud 断路器Hystrix实战

微服务架构中,因分布式环境引起的请求状态通常包含如下三种 成功失败超时 对于单机系统来说可以很容易的做到快速失败,这是没有问题的,对于分布式环境而言由于网络的不可靠性而导致的请求状态不确定的情况成为必然,我们不能容忍一个无限阻塞的现线程甚哪怕超过1S也不允许我们更愿意看到它快速失败. 基...

2017-03-18 15:44:56 4999 0

原创 Spring Cloud 基于eureka 服务注册中心

netflix 下开源组件eureka 提供了微服务注册和发现的解决方案,Spring整合了netflix 下若干组件用于快速构建微服务集群.本节围绕eureka  展开,举例示意使用eureka实现微服务注册和发现的基本操作. 服务注册中心,基于eureka-server 提供,Spring...

2017-03-16 20:06:27 1736 0

原创 Spring Boot +Spring AOP 可插拔式日志思路

Spring 基于IOC容器管理Bean的方式,使得其有能力对IOC容器中的所有Bean进行无限可能的操作,Spring AOP是基于 IOC容器的高级特性,借助与AOP能实现一些可插拔模块,而不影响原有系统的设计.         本节结合Spring Boot 在一个已有的Web项目中使用AO...

2017-03-15 07:57:13 7752 0

原创 Java Jar冲突解决

jar冲突场景: 不同版本间的弱依赖,不同组件依赖同一个jar的不同版本, 其中一个版本即可, 一般发生在一些向下兼容的类库中,通常情况下可以解决问题. 不同版本间的强依赖关系,不同组件强依赖与两同一个jar的不同版本,由于版本跨度过大,导致高版本的jar并不兼容低版本中的方法,不能通过 来解...

2017-03-11 16:30:40 1641 0

原创 SpringBoot +SpringCloud微服务示例,整合FreeMaker,AngularJS

SpringBoot +SpringCloud为服服务示例,整合FreeMaker,AngularJS 干货一篇,本节以SpringBoot + SpringCloud为例 构建轻量级微服务,旨在推荐一种更加敏捷的开发流程,本篇暂不会提及相关概念,皆以代码示意. GIT:https://gith...

2017-03-05 16:27:02 15699 4

原创 深入理解SpringMVC-基础篇

深入理解SpringMVC-入门篇 SpringMVC是一个轻量级的MVC框架,SpringMVC由于其轻量级的实现以及与Spring框架的无缝整合等诸多优势,近年来在MVC框架中脱颖而出,受到诸多开发人员的青睐,学习SpringMVC 势在必行。   Web环境中使用SpringMVC:Spri...

2016-06-11 13:57:20 6600 0

原创 TheadLocal 原理及实践

目录 ThreadLocal 实现原理 使用场景 使用实例 ThreadLocal 线程本地存储,为变量在每个线程中都创建一个副本(在Thread中存储以ThreadLocal为key的值),每个线程可以访问自己内部的副本变量。 实现原理 ThreadLocal内部用Threa...

2019-05-14 08:53:24 179 0

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