自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 资源 (5)
  • 收藏
  • 关注

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

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

2019-05-12 14:18:57 359

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

目录场景描述:历史优化措施可行性分析硬件设备流量分析峰值预估【单个服务】缓存预估峰值流量处理可行性方案源端转发分布式缓存本地缓存可行性实践案例1问题分析基于Guava的本地缓存基于Guava的令牌桶限流算法参数配置场景描述:平台接入了大量的图片,稳定情况下大概1200张/秒;现有架构下内部系统需要先将这部分数据落地并生...

2019-05-12 14:10:53 688

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

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

2019-05-12 13:13:34 1834

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

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

2019-03-30 13:02:19 2350 1

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

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

2019-03-10 16:30:37 270

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

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

2018-12-21 16:19:48 1325

原创 Springboot 整合druid数据源

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

2018-06-16 09:58:13 480

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

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

2018-06-16 09:36:25 3212

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

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

2018-06-09 14:31:21 2583

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

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

2018-05-19 09:32:36 880

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

概述:总结一下Spark1.5.2+Kafka 0.8+中使用Direct Approach(直接获取的方式)消费Kafka数据开发过程中遇到的各种问题和经验.整合Spring    Spark开发中引入Spring可以方便的管理配置信息,数据源等,借助于Scala的单例特性可以创建一个独立的加载Spring IOC容器的工具类,剩下的事情就好办了,在配置文件中完成就可以了,并没有尝试去使用注解,...

2018-04-19 19:53:02 1146

原创 SpringBoot 启动流程分析

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

2018-04-01 17:23:21 3094

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

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

2018-03-25 08:29:59 575

原创 记一次FastDFS优化

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

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

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

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

2018-03-15 12:57:27 1517

原创 Logstash入门实战

提问:现有一服务用于清理Elasticsearch中索引的文本数据,在这之前需要保证将记录中关联的几张图片也删除掉才能将该条记录完全删除,由于删除图片采用RPC部署的多个删除服务来完成,网络故障自然无法避免,同时对于Elasticsearch数据抓取采用Scroll API以减轻对Elasticsearch的影响,为便于观察数据删除的进度,服务中提供了守护进程用于统计每批次抓取数据的删除情况(图片...

2018-03-11 13:39:52 1986

原创 记一次Phoenix写入优化

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

2018-01-21 20:23:05 6831

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

常见的单个服务要要完成某个核心功能,由于设计原因该服务智能部署一个不支持多个同时运行,一方面在服务可运行的情况下要在运维人员意外的启动多个服务节点的情况下服务仍然能够正常运行,另外单个节点运行的服务在主机发生故障的时候难免导致服务意外终止,这种场景下我们更希望采用一种更优雅的方式不中断服务。以下以两种场景为例说明。Redis 实现分布式锁业务的正常运行依赖于Redis集群,因此考虑使用Re

2017-12-03 16:30:09 1274

原创 Apche Avro 实现RPC调用

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

2017-12-03 15:24:46 1053

原创 Hessian 实现RPC调用

http,webservice等web服务实现RPC大都使用文本协议进行数据传输,弊端在于使用文本进行数据传输浪费了部分网络带宽,尤其在传输大量的可通过编码压缩的数据时其性能有很大的可提升空间,通过对RPC传输的数据进行必要的编码能降低服务负载和网络IO开销,提高系统整体性能。Hession是一个Web服务协议,独立使用不依赖其它大的框架,以二进制形式进行数据传递。支持多客户端。支持Falsh

2017-12-03 10:32:57 1379

原创 Apache Hive 入门

概述         HDFS被设计用于存储大量的数据,被存储在HDFS中的各样的文件面临数据分析以挖掘其价值的挑战,HDFS上层现支持多种进行数据分析和处理的架构总结如下:1.        基于传统的MR来进行数据的处理,由研发人员编程实现.Hadoop MapReduce为代表2.        基于DAG[有向无环图]的作业调度模式,以Apache Tez、Oozie技术为代表

2017-07-30 18:34:41 400

原创 Apache Sqoop 入门

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

2017-07-25 20:20:46 334

原创 Apache Phoenix 入门

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

2017-07-23 15:03:09 6462

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

从源码角度分析一下Kaka响应客户端的流程总体上看是一个 1-M-N的请求响应模型,如图1-1所示,下做简述:Kafka使用ServerSocketChannel + Java NIO 非阻塞的方式来响应客户端请求Kafka由一个Acceptor线程负责将来自于不同客户端的请求分发给多个Processor线程进行处理,期间有简单的负载均衡策略,保证单个Processor处理的连接不至于

2017-07-01 18:03:48 1222

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

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

2017-06-25 16:19:51 502

原创 Spark 架构-初识

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

2017-04-03 15:01:19 392

原创 Hadoop2.X MR作业流

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

2017-04-02 18:49:44 1091

原创 Hadoop2.x YARN架构

Hadoop 2.X YARN架构概述:Hadoop2.X 摒弃了1.X中JobTracker扮演的资源调度角色,改用具有更具通用性的YARN 资源管理框架,而YARN本身更是开源集群资源管理的典范.资源调度: |  切割资源管理和作业调度,监控到不同的守护进程中[daemons],YARN提供了一个全局的资源管理器ResourceManager(RM),每一个应用程序有自己独立的Ap

2017-04-02 16:51:03 547

原创 Hadoop2.X HDFS架构

概述:DHFS是一个基于廉价硬件基础设施的高度容错性的分布式文件系统.HDFS由Apache Nutch项目演化而来.现阶段HDFS作为大数据存储解决方案,拥有众多的受益企业和个人,学习势在必行. HDFS目标:|  硬件故障是常态.对应快速故障恢复和转移.|  流式数据接收,高吞吐量而不是低延迟下的实时性要求|  大数据集. 通常考虑的G字节的存储级别.数以百计的集群,但节点

2017-04-02 15:45:00 4066

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

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

2017-03-30 21:21:14 808

原创 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主机, 依据来源于ZK的ZAB协议,可查询相关资料论证.为保证集群一致性,强烈建议使用统一的host

2017-03-28 07:45:27 386

原创 Spark + Kafka 集成 指南

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

2017-03-19 13:44:54 4318

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

完整的微服务解决方案应该包含了微服务所涉及的方方面面,从服务的集中式配置,注册中心,断路器,负载均衡,监控 等模块之后面临的一个问题是如何直观的将微服务集群中的各个服务的状态显示给对"CODE"没有感觉的用户来使用.这当让是生产环境中所必要的,尤其对运维人员来说.幸运的是Spring Boot 生态链中已经实现了基本的微服务管理WEB  UI,允许我们更直观的观察微服务的运行状态.该项目

2017-03-19 08:34:56 30717 1

原创 Spring Cloud 断路器Hystrix实战

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

2017-03-18 15:44:56 5760

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

netflix 下开源组件eureka 提供了微服务注册和发现的解决方案,Spring整合了netflix 下若干组件用于快速构建微服务集群.本节围绕eureka 展开,举例示意使用eureka实现微服务注册和发现的基本操作.服务注册中心,基于eureka-server 提供,Spring为其提供了简洁的服务管理界面.依赖如下: org.springframework.c

2017-03-16 20:06:27 1852

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

Spring 基于IOC容器管理Bean的方式,使得其有能力对IOC容器中的所有Bean进行无限可能的操作,Spring AOP是基于 IOC容器的高级特性,借助与AOP能实现一些可插拔模块,而不影响原有系统的设计.        本节结合Spring Boot 在一个已有的Web项目中使用AOP提供一种后续的日志补救方案.更多关于IOC容器的概念请查询相关资源,附件中提供AOP学习的简要笔记

2017-03-15 07:57:13 8652

原创 Java Jar冲突解决

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

2017-03-11 16:30:40 2004

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

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

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

原创 深入理解SpringMVC-基础篇

深入理解SpringMVC-入门篇SpringMVC是一个轻量级的MVC框架,SpringMVC由于其轻量级的实现以及与Spring框架的无缝整合等诸多优势,近年来在MVC框架中脱颖而出,受到诸多开发人员的青睐,学习SpringMVC势在必行。 Web环境中使用SpringMVC:SpringMVC提供了可插拔式的框架嵌入形式,将SpirngMVC插入或者从Web项目中卸载只需要简

2016-06-11 13:57:20 6904

原创 TheadLocal 原理及实践

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

2019-05-14 08:53:24 902

JVM学习笔记(一)

一份JVM学习的笔记,含查看JVM运行时信息\JVM垃圾收集信息\JVM锁信息等

2018-06-02

Tomcat +Apache实现负载均衡

Windows 环境下 Tomcat +Apache实现负载均衡

2016-04-08

SSM整合流程

SSM 整合开发流程

2016-04-08

SSH框架整合流程

SSH 开发环境搭建流程

2016-04-08

Struts2深入理解

Struts2深入理解

2016-03-25

空空如也

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

TA关注的人

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