[置顶] 从零到日志采集索引可视化、监控报警、rpc trace跟踪-分布式唯一ID生成

在平时的工作中如果将数据库进行了分库分表,那么肯定需要分布式唯一ID的生成策略。rpc trace跟踪模块也需要一个分布式唯一ID的生成器,本文介绍基于snowflake改造的分布式唯一ID生成策略。根据snowflake的算法,做了些许改变,唯一ID是一个int64的值,第一位占位,接下来40位为毫秒级的时间,接下来13位(支持8192个)为app和host组合的分配的值(即在N个服务器上每个服...
阅读(593) 评论(2)

[置顶] 从零到日志采集索引可视化、监控报警、rpc trace跟踪-系统上下线监控

之前说到注册中心的设计,zookeeper中的节点部署如下: kafkaAppender初始化向zk进行app节点注册,并写入相关的信息kafkaAppender发生异常暂停工作会向app节点写入相关信息,以便监控系统能够实时感知并发送报警app正常或者异常退出后,zk中的app临时节点会消失,shutdownhook会正常运行,监控系统能够实时感知并发送报警(这里就需要我们在自定义的log...
阅读(456) 评论(4)

[置顶] 从零到日志采集索引可视化、监控报警、rpc trace跟踪-日志索引

之前说到日志事件的设计、如何埋点以及基于jvm的程序如何对接我们的系统,接下去我们说下日志如何进行索引。通过前三篇博客可以知道数据通过LOGGER.info等打印日志的函数就可以存入kafka,所以我们对日志建立索引只需要实时读kafka写入es,为了提高实时索引的速率,我们会部署3个实例实时消费kafka的9个partition,并且使用es的bulk load api,这样测试下来大概3台...
阅读(548) 评论(2)

[置顶] 从零到日志采集索引可视化、监控报警、rpc trace跟踪-日志事件、埋点设计及对接

日志事件设计 为了处理不同事件类型的日志,我们将不同业务含义的日志抽象成了日志事件,具体如下: public enum EventType { normal(Constants.EVENT_TYPE_NORMAL, "正常入库日志"), invoke_interface(Constants.EVENT_TYPE_INVOKE_INTERFACE, "api调用"),...
阅读(438) 评论(2)

[置顶] 从零到日志采集索引可视化、监控报警、rpc trace跟踪-自定义日志框架

这里不去分析哪种日志采集方式最好,不对flume、logstash等其他软件做比较,我这边只会介绍适合我们公司使用的系统。由于我们公司部署的项目采用的都是java或者scala项目,日志的框架是log4j或者logback。日志的采集应该是不侵入或者最少侵入对接系统,所以我们使用轻量级的方式,自定义log4j和logback的kafka appender,将log输出的日志同时走kafka a...
阅读(431) 评论(0)

[置顶] 从零到日志采集索引可视化、监控报警、rpc trace跟踪-架构介绍

接下去的几篇博客将介绍如何从零开发出一套集零侵入的日志采集、日志索引及可视化、基于日志监控报警、基于日志rpc trace跟踪进行系统性能分析的系统,之后都会称为监控中心系统。经测试,该系统的采集以及处理延迟在2秒以内,基本上做到了实时,其中日志采集模块在3台pc机器上测试下来大概每秒能够索引2.5w左右的日志,并且能够随着机器的增加性能水平扩展,每秒能够有效得处理50w+条的日志。 本篇作为第...
阅读(979) 评论(0)

feign-底层http请求组件剖析

这篇文章主要介绍下feign底层使用的http发送请求的组件,下面就一步步得来做剖析。     我们知道使用feign的时候两个重要的注解@FeignClient和@EnableFeignClients,这两个注解分别是标识是一个feign的client,在启动的时候需要去扫描和register相应的信息,和允许使用feign的client,我们查看源码可以知道这两个注解都来自于org.sprin...
阅读(525) 评论(1)

feign-使用最佳实践

Spring Cloud提供的微服务都是基于http,那么在请求的时候如果用spring提供的RestTemplate再加一个Ribbon提供的@LoadBalanced注解也是可以比较方便的发起微服务的调用,并且也能做到负载均衡。但是如果服务提供者参数较多也较复杂,那么使用这种方式需要拼接url或者使用Map的形式,但总归是不便于开发的。     Spring Cloud全家桶提供了feign这...
阅读(564) 评论(0)

spring-cloud logback日志初始化问题

记得在之前的博客中讨论过spring-boot中logback的启动问题,见:http://blog.csdn.net/jthink_/article/details/52513963     当时讨论了loback会初始化两次的问题以及如何只让logback自己初始化,当时的版本是1.3.6。     最近在调研spring cloud相关的技术,当加入spring cloud的时候发现logb...
阅读(487) 评论(2)

高可用eureka server搭建

作为一个注册中心,为了确保微服务能够正常的注册和发现,单机的eureka server肯定不能满足这样的需求,如果注册中心挂掉,那么线上的所有服务都会有影响,那么需要有一个高可用的eureka server来支撑,本文主要介绍高可用的eureka server的搭建。     在eureka的服务治理设计中,所有的节点既是服务提供方,也是服务消费方,服务注册中心也是,那么eureka server...
阅读(318) 评论(0)

基于jenkins构建应用的docker镜像做持续集成和部署

为了做持续的集成和部署,引入了jenkins,利用jenkins来构建应用的docker镜像并push到私有仓库,然后再基于应用的docker镜像来发布项目,这样减少了很多的手动操作,基本能实现持续集成和持续部署。项目基本骨架该项目是gradle的项目,代码类似于https://github.com/JThink/SkyEye/tree/master/skyeye-alarm,这里除了源码和gra...
阅读(1154) 评论(8)

基于docker compose的应用服务部署

接上文介绍docker的编排工具来部署,这里采用原生的compose方式,以后再介绍k8s如何做。本文介绍的例子为:https://github.com/JThink/SkyEye,4个服务提供了一组完整的应用。直接上docker-compose.ymlversion: '3'services:  skyeye-alarm:  image: 192.168.xx.xx:5000/xxx/sky...
阅读(390) 评论(4)

基于docker的应用服务部署

docker部署一个服务将会有多种方式,本文将一步步介绍。创建应用镜像(简单的取队列发邮箱的项目,见:https://github.com/JThink/SkyEye/tree/master/skyeye-alarm)Dockerfile# build the base image: jdk# this is the docker file, use the ubuntu 14.04-jdk7#...
阅读(428) 评论(4)

docker基础镜像制作

项目往基于容器上迁移,涉及到最基本的基础镜像制作,本文介绍制作一个基础的jdk的镜像并push到私有仓库。准备文件sources.list由于需要使用apt安装一些相关的组件,将源指向我们公司内部的源,内容如下:deb http://192.168.88.8/ubuntu/ trusty main restricted universe multiversedeb http://192.168.8...
阅读(417) 评论(4)

创建认证授权的docker私有仓库

之前介绍过简单的搭建docker私有仓库的方法(见http://blog.csdn.net/jthink_/article/details/50596239),但是如果是在测试、开发、生产环境中都使用该私有仓库,必须做一些认证授权相关的限制,否则任何人都能创建和更改一个镜像,这样有可能会对镜像造成污染。安装docker简单方式,daocloud提供的方式:curl -sSL https://get...
阅读(492) 评论(4)

自定义spring-boot-starter-dubbox

项目背景 代码 DubboAutoConfiguration DubboProperties DubboService springfactories github地址 打包 使用方式 依赖 集成 使用 生产者 消费者 项目背景 公司越来越多的项目采用spring-boot+dubbox的soa服务架构,由于dubbox本身没有spring-boot的starter,故写出一个spring-boot...
阅读(792) 评论(2)

自定义spring-boot-starter-hbase

项目背景 代码 DubboAutoConfiguration DubboProperties DubboService springfactories github地址 打包 使用方式 依赖 集成 使用 生产者 消费者项目背景 公司越来越多的项目采用spring-boot+dubbox的soa服务架构,由于dubbox本身没有spring-boot的starter,故写出一个spring-boot-...
阅读(594) 评论(0)

scala java+spring boot写spark程序骨架

介绍下scala如何配合spring boot框架进行项目开发,由于scala和java一样都是运行在jvm中的,所以和java一样,scala配合spring boot使用几乎和java一样,由于java和scala各有各的特性,处理的场景不同(比如scala天生适合集合的处理),所以有的时候还是需要用java来处理较为方便,所以该骨架中将java和scala一起进行混编,最终打成jar包提供部...
阅读(1944) 评论(0)

httpclient 多线程高并发Get请求

最近公司需要对地址进行清洗,挑选了百度的LBS平台的Geocoding API v2接口,量级在千万级别。为了达到较高的效率,优化了下httpclient(版本:4.2.3)的get请求,具体的就是使用http的连接池,这样不需要每次get都需要3次握手,大大提高了并发能力,并且失败率降低了100倍,具体代码如下: public class HttpRequest {...
阅读(3508) 评论(5)

kafka java api 消费入es

最近在做日志监控,日志通过logback或者log4j写入kafka,需要用kafka的java api写个消费端。由于是进行日志消费,可以允许有一定的丢失和重复消费,但是应该尽量避免。 代码: public class KafkaConsumerTest {     private static Logger LOGGER = LoggerFactory.getLogg...
阅读(1150) 评论(0)
94条 共5页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:487942次
    • 积分:4095
    • 等级:
    • 排名:第7582名
    • 原创:92篇
    • 转载:2篇
    • 译文:0篇
    • 评论:213条
    个人技术
    博客专栏
    最新评论