- 博客(851)
- 收藏
- 关注

原创 Zookeeper之基于Observer部署架构
Observers:在不伤害写性能的情况下扩展Zookeeper尽管通过Client直接连接到Zookeeper集群的性能已经非常好了,但是这种架构如果要承受超大规模的Client,就必须增加Zookeeper集群的Server数量,随着Server的增加,Zookeeper集群的写性能必定下降,我们知道Zookeeper的Znode变更是要过半数投票通过,随着机器的增加,由于网络消耗等原因必...
2015-12-20 18:37:51
11914
10

原创 Zookeeper你应该了解基础知识
简介Apache ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,由Client和Server构成,Server提供了一致性复制和存储服务,Client包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。ZooKeeper的设计非常易于编程,ZooKeeper维护着一个hierarchal(层次)的名字空间,它采用树形的数据结构,类似于标准文件...
2015-11-26 15:36:44
4901
2

原创 Flume之ChannelSelector源码分析
Flume中channel选择器(selector.type配置)必须实现ChannelSelector接口,实现了该接口的类主要作用是告诉Source中接收到的Event应该发送到哪些Channel,在Flume中主要由两个实现方式:1,复用,实现类:MultiplexingChannelSelector2,复制,实现类:ReplicatingChannelSelector如下:...
2015-11-09 21:20:34
3843

原创 Flume几种监控方式
Flume主要由以下几种监控方式:JMX监控JMX高爆可以在flume-env.sh文件修改JAVA_OPTS环境变量,如下:export JAVA_OPTS=”-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=5445 -Dcom.sun.management.jmxremote.authentic...
2015-11-04 17:57:13
9622

原创 Flume+Elasticsearch搭建实时日志分析系统
最近做一个检测全球网络状况的项目,主要用于检测全球各个国家,地区的机房网络状况,服务的性能,DNS解析等等...情况的数据,通过中央服务器添加任务,下发任务到部署在全球各个国家和地区的minipc,minipc将获取到的数据反馈到监控服务,然后进行数据整合和分析提供报表,供公司更有针对性的优化网站性能。之所以采用Flume + Elasticsearch,而没有采用ELK(elasticsea...
2015-10-30 15:06:27
8169

原创 Flume + Keepalived构建高可用分布式采集系统
上一篇《Flume之Failover和Load balancing原理及实例》的实例的架构如下:10.0.1.76作为Client,通过exec获取nginx的日志信息,然后将数据传到10.0.1.68(配置了Failover和Load balancing)的节点,最后10.0.1.68将数据发送的10.0.1.70,77,85,86,87节点,这些节点最终将数据写到本地硬盘。 那...
2015-10-23 14:56:03
4956

原创 Java类锁和对象锁
在并发环境下,采用锁的方式来解决对共享资源的互斥访问。在Java中,锁可以分类如下两类:对象锁 JAVA中任何一个非null对象都可以作为"锁",每个同步锁会有一个计数器,JVM负责跟踪对象被加锁的次数,没有线程获取该对象的锁时,计数器的值为0,如果一个线程第一次对这个对象加锁,那么计数器的值就为1,之后相同的线程在获得该对象的锁时,计数都会递增的加1,如果相同的线程对此对象解锁,那...
2015-09-09 19:37:04
2685

原创 Memcached之缓存雪崩,缓存穿透,缓存预热,缓存算法(7)
缓存雪崩缓存雪崩可能是因为数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机。解决思路:1,采用加锁计数,或者使用合理的队列数量来避免缓存失效时对数据库造成太大的压力。这种办法虽然能缓解数据库的压力,但是同时又降低了系统的吞吐量。2,分析用户行为,尽量让失效时间点均匀分布。避免缓存雪崩的出现。3,如果是因为某...
2015-08-27 20:37:08
8592
2

原创 Hadoop之命令集合(全)
Hadoop命令系列文章共5篇,链接地址如下: Hadoop之文件系统Shell Hadoop之命令指南 Hadoop之HDFS命令 Hadoop之MapReduce命令 Hadoop之YARN命令 希望对大家能有所帮助,不正确的地方希望留言讨论。...
2015-08-19 23:59:06
2810

原创 Hadoop之SequenceFile
Hadoop序列化文件SequenceFile可以用于解决大量小文件(所谓小文件:泛指小于black大小的文件)问题,SequenceFile是Hadoop API提供的一种二进制文件支持。这种二进制文件直接将<key,value>对序列化到文件中,一般对小文件可以使用这种文件合并,即将文件名作为key,文件内容作为value序列化到大文件中。 hadoop A...
2015-08-14 19:50:48
8400
3

原创 Hadoop之推测执行
最近在测试环境跑任务,有一部分任务出现如下情况:推测执行(Speculative Execution)是指在集群环境下运行MapReduce,可能是程序Bug,负载不均或者其他的一些问题,导致在一个JOB下的多个TASK速度不一致,比如有的任务已经完成,但是有些任务可能只跑了10%,根据木桶原理,这些任务将成为整个JOB的短板,如果集群启动了推测执行,这时为了最大限度的提高短板,Hadoo...
2015-08-13 16:55:32
10672
1

原创 Hadoop之机架感知
在分布式集群下,由于机架的的槽位和交换机网口数量的限制,使得集群上的机器不得不跨越机架,通常一个大型的集群会跨越很多机架。一般情况机架内机器的通讯会快于跨机架机器之间的通讯,并且机架之间机器的网络通信通常受到上层交换机间网络带宽的限制。 通过机架感知,可以带来性能和安全性的提升,例如:HDFS块为了故障容错,采用机架感知按到一定的策略将某些块放置在不同的机架上,这样就算一个机架瘫痪也不会影...
2015-08-05 17:19:06
5875

原创 Hadoop之YARN及运行流程
YARN是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。YARN通用资源管理框架组成部分:1,ResourceManager(RM):由Scheduler(资源调度器)和ApplicationsManager(ASM:应用管理器)2个组件组成。RM和每个NodeManager (NM)构成一个资源估算框架,管...
2015-07-22 18:11:48
5389
2
转载 如何使用OpenTelemetry进行端对端跟踪
微服务架构引入了一种全新的方式来扩展具有多个独立服务的应用程序。与单体架构相比,它确实有助于提高弹性、可扩展性、生产力、效率。然而,其自身也带来一些复杂性,例如难以追踪错误或监控整个基础设施的流量。因此,为了消除这些复杂性,很多组织采用了分布式跟踪方法。这种方法有助于解决高级调试问题并提高网络中的可见性。它还通过缩小端到端延迟、特定服务或功能等当前所遇到的错误为开发人员提供支持。本文旨在介绍分布式...
2023-06-06 08:18:36
5
转载 云原生数据系统的设计思考
在设计云原生数据系统时,并没有特定的托管基础设施、编程语言或者设计模式。构建云原生系统有多种多样的方式。让我们来看一看云原生架构应该牢记的设计原则,以及一个优秀的云原生平台具备哪些特征。一、云原生架构云原生架构本质上是使用云构建应用程序的设计模式。虽然没有具体的方法来实现这种架构或预定义的云原生设计,但最常见的方法是将应用程序分解为几个微服务,让每个微服务处理不同类型的功能。然后,每个微服务都由一...
2023-06-05 08:18:02
9
转载 作业帮多云多活架构的探索和实践
作业帮成立于 2015 年,是一家致力于用科技手段助力普惠教育的公司。公司主要大的业务板块可以分成两块,一块是作业帮 App,是一款面向于 K12 的学习辅助工具平台,是一款典型的流量互联网的产品。另一块是作业帮直播课,典型的产业互联网的产品,涵盖了教育的诸多链条,如教研、教务、教学、辅导等。除此之外,公司在智能硬件等一些其他方面也有一些积极的探索和布局。了解完作业帮业务特点,我们再来看作业帮的技...
2023-06-01 10:55:21
12
转载 分布式系统关键技术:全栈监控
一、监控系统需要完成的功能为:全栈监控;关联分析;跨系统调用的串联;实时报警和自动处置;系统性能分析。多层体系的监控二、全栈监控(就是三层监控)基础层:CPU、内存、网络吞吐、硬盘 I/O、硬盘使用等。中间层:Nginx、Redis、ActiveMQ、Kafka、MySQL、Tomcat等。应用层:HTTP 访问的吞吐量、响应时间、返回码,调用链路分析,性能瓶颈,还包括用户端的监控。监控的标准化:...
2023-05-31 08:18:04
10
转载 高性能负载均衡-分类和算法
高性能集群之所以复杂,主要原因是增加了任务分配器,以及为任务选择合适的分配算法。负载均衡器就是任务分配器,负载均衡这个名称已经成为事实标准,但负载均衡不只是为了计算单元的负载达到均衡状态。分类及架构常见的负载均衡分三种:DNS负载、硬件负载、软件负载1、DNS负载均衡定义:解析同一个域名返回不同的IP地址,一般用来实现地理级别的均衡。例如同样的域名,北方用户和南方用户获取的地址是不一样的。优点:简...
2023-05-30 08:18:31
11
转载 解决微服务之间的数据依赖问题
更多内容关注微信公众号:fullstack888微服务,顾名思义,就是将我们程序拆分为最小化单元来提供服务。在一体化系统中,各个微服务也是不可能独立存在的,那么微服务之间涉及到的数据依赖问题,应该怎么处理呢?我们从场景入手来分析考虑此类问题。一、场景在一个供应链系统中,存在商品、销售订单、采购三个微服务,他们的主数据部分数据结构如下:商品:订单和子订单:采购单和子订单:在设计这个供应链系统时,我们...
2023-05-25 08:22:33
14
转载 分库分表的-21条法则
更多内容关注微信公众号:fullstack888不焦急实战,咱们先介绍下在分库分表架构施行过程中,会接触到的一些通用概念,理解这些概念可能帮忙了解市面上其余的分库分表工具,只管它们的实现办法可能存在差别,但整体思路基本一致。因而,在开始实际操作之前,咱们有必要先把握这些通用概念,以便更好地了解和利用分库分表技术。咱们联合具体业务场景,以t_order表为例进行架构优化。因为数据量曾经达到亿级别,查...
2023-05-24 08:18:50
12
转载 亿级大表拆分心路历程
# 前言系统内有一张5000W+的大表。跟踪代码发现,该表是用于存储资金流水的表格,关联着众多功能点,同时也有众多的下游系统在使用这张表的数据。进一步的观察发现,这张表还在以每月600W+的数据持续增长,也就是说,不超过半年,这张表会增长到1个亿!这个数据量,对于mysql数据库来说是绝对无法继续维护的了,因此在接手系统两个月后,我们便开起了大表拆分的专项工作。(两个月时间实际上主要用来熟悉系统、...
2023-05-19 08:18:51
21
转载 探索 OpenAI 平台架构
自 2022 年 11 月推出ChatGPT以来,OpenAI一直受到知识工作者、开发人员以及几乎所有互联网和 Web 用户的广泛关注。但是,OpenAI已经成立很长时间了,甚至在 ChatGPT 创建之前就已经存在了,而且为开发人员提供了许多令人兴奋的服务。它是首批通过简单 REST API 端点开放生成式 AI 的平台公司之一。这是 OpenAI 系列文章的第一篇,我们将探讨 OpenAI 的...
2023-05-17 08:18:07
26
转载 中原银行统一日志平台
项目背景日志是记录 IT 软硬件系统运行过程的详细数据,对系统运行状态监控、各类问题排查、软件行为分析等都有着至关重要的作用,堪称 IT 系统的“黑匣子”。在传统 IT 架构中,日志都以文本文件的形式储存在各软硬件系统的运行现场。但是在金融场景飞速发展的今天,随着业务类型和用户量的高速增长,IT 系统的日志类型和日志体量也在急速扩张。然而各类日志(软硬件)存储分散、内容繁杂且日志格式和打印规范等各...
2023-05-16 08:18:08
20
转载 作业帮在多云环境下的高可用双活架构优化实践
高可用双活架构方案升级需求由于作业帮业务的多样性和复杂性,我们对于分布式数据库的使用需求主要基于以下几个方面:第一,在海量数据的情况下希望减少分库分表的复杂度,并解决单机存储瓶颈。第二,对 I/O 密集型的 SQL 及 CPU 密集型的 SQL 来说,我们希望能够提高响应速度,减少它在 MySQL 中对线上业务的影响。第三,每个业务内部都需要业务人员频繁查询、录取线上数据,并有相应的报表服务以供上...
2023-05-08 08:18:02
40
转载 Elasticsearch 还是 Clickhouse?
更多内容关注微信公众号:fullstack888前言Elasticsearch 是一个实时的分布式搜索分析引擎,它的底层是构建在Lucene之上的。简单来说是通过扩展Lucene的搜索能力,使其具有分布式的功能。ES通常会和其它两个开源组件logstash(日志采集)和Kibana(仪表盘)一起提供端到端的日志/搜索分析的功能,常常被简称为ELK。Clickhouse是俄罗斯搜索巨头Yandex开...
2023-04-28 08:18:23
40
转载 云原生时代,如何建设稳定性可观测体系?
从单体架构到集群架构再到微服务架构,业务越来越庞大,也越来越复杂。每一次架构的升级,在提升了业务吞吐量的同时,必然会带来更大的复杂度。云原生时代背景下,微服务、Service Mesh、 Serverless 等新技术的出现,业务的复杂度很快就远远超越了个人的人力极限,大规模应用更是需要成千上万专业的人协作才能完成。应用稳定性链路中的因素也越来越多,一个应用相关的稳定性指标从基础设施到中间件,再到...
2023-04-27 08:18:51
45
转载 技术组件优化分析:原理、方法与实战分享
对一个固定的技术组件的分析优化思路,即组件不是我们开发的,但又要分析优化它,怎么办?当数据库的CPU并没有全部用完,而是只用了几颗的时候,如何具体定向?将用到查看数据库本身线程栈的方法,这和前面直接看trx表有所不同。1 场景运行数据对于支付前查询订单列表接口,先看第一次运行的性能场景结果:从运行的场景数据来看,这接口TPS一开始还挺高,达800。但响应时间也增加,瓶颈已出现。只要知道瓶颈在哪,就...
2023-04-26 08:18:56
29
转载 工单系统——深度解析高效的功能架构(下)
前言工单的功能架构的重点功能前两篇已经阐述完了,本篇我们主要在于查漏补缺,阐述清楚前两篇没有讲到的【用户管理】、【工单查询】、【工单质检】三个功能模块,给工单系统的功能架构结个尾。同时我们也将前文遗留下来没有解释的【渠道接入】、【配置组件】、【流转流程】三个问题解释清楚。一、用户管理1. 账号管理工单系统的账号体系要与设计规划相呼应。如果只是面对后台服务部门的账号体系,那仅仅与服务部门的业务系统中...
2023-04-25 08:33:57
59
转载 工单系统——深度解析高效的功能架构(中)
前言本文继续阐述工单系统-高效的功能架构,中篇的5个支撑性的模块分别为:工单管理、工单工作台、工单时效、工单通知、工单监控,主要解决的是工单系统的使用体验是否足够好的问题。工单系统在体验上的优化大部分优化以及小部分在效率上的优化会通过这五个功能模块来完成。同时这五个功能模块的设计理念也紧密围绕高效协同和灵活适配,在这五个模块中仍然能够看到大量为了更高效、更灵活做出的功能架构设计。一、工单管理工单管...
2023-04-24 08:18:16
56
转载 工单系统——传动器的顶层设计
更多内容关注微信公众号:fullstack888本文主要阐述工单系统的设计思路。在前文中我们与大家一起回顾了工单系统的前世今生,本文我们将继续从2个方面,6个角度拆解工单系统的设计思路,让大家能够从顶层设计更加深刻地理解工单系统。01 两个理念工单系统设计的两个核心:高效协同和灵活适配。1. 高效的协同方式举个例子:一天,客户小美找315投诉你们公司的维修员大壮,在修理空调的时候把家里的空调遥控器...
2023-04-19 08:17:56
25
转载 工单系统——骨灰级解析前世今生
前言工单系统是业务系统中的传动器,在业务运营的过程中起着非常重要的作用,笔者系统通过一个系列的文章,全面分析工单系统的历史渊源、设计思路、系统架构以及功能设计来帮助人们对工单系统有更深的认识。要想知道一个系统应该是什么样的,需要往哪里发展,首先应该对它产生的业务背景有深刻的认识;说清楚了背景,自然也就明白了发展的基础和目标,系统设计和优化也就不会迷惘。工单系统的诞生场景存在于售前、客服、售后等各个...
2023-04-18 08:18:32
23
转载 如何在大厂做好架构演进?
更多内容关注微信公众号:fullstack8881 架构演进的定义1.1 定义通过设计新的系统架构(4R),来应对业务和技术的发展变化。1.2 关键点新架构新的复杂度1.3 目的应对业务和技术的发展变化后带来新的复杂度。案例淘宝去IOE,是因为业务发展大了后,IOE的成本和可控性难以满足,而非性能。架构重构 vs 架构演进技术手段不是区分架构重构和架构演进的方法,复杂度是否变化才是判断关键。2 架...
2023-04-13 08:18:30
16
转载 大型网站背后的高性能系统架构设计
更多内容关注微信公众号:fullstack8881. 性能测试1.1. 性能指标网站性能测试的主要指标有:响应时间 - 响应时间(RT)是指从客户端发一个请求开始计时,到客户端接收到从服务器端返回的响应结果结束所经历的时间,响应时间由请求发送时间、网络传输时间和服务器处理时间三部分组成。并发数 - 系统同时处理的请求、事务数。吞吐量 - TPS(每秒事务数)、HPS(每秒 HTTP 请求数)、QP...
2023-04-12 08:18:26
32
转载 账户账务系统架构与实践
更多内容关注微信公众号:fullstack888由于企业每条业务线都有各自的用户、商家以及运营补贴策略。在开始阶段我们并没有统一的账务系统,每个业务线都有类似账务系统相应的系统。导致的问题就是资金池业务吻合严重,对账难,以及数据不统一,另外成本也非常高,为此我们做了统一的账户系统。账务系统作为到家业务线的基础服务,为到家业务提供统一清算、账户、对账、财务报表能力。一、账务系统概况 目前...
2023-04-11 08:18:47
91
转载 软件架构决策指北:怀疑主义的软件架构设计
更多内容关注微信公众号:fullstack888人们普遍认为态度是成功的关键,这是有道理的。正如亨利·福特说的:“不管你认为自己是否能够做到——你都是对的。”如果你不相信自己能做好一件事,而且不去尝试,就可能永远做不好,这一点似乎是显而易见的。然而,只是相信自己能够做到也仅止步于此,准备和计划也很重要。怀疑也是如此,但这是一种特定的类型,这里我们指的是怀疑主义。更具体地说,哲学怀疑主义是这样一种信...
2023-04-07 08:18:16
33
转载 Java实现异步的8种方式
一、前言异步执行对于开发者来说并不陌生,在实际的开发过程中,很多场景多会使用到异步,相比同步执行,异步可以大大缩短请求链路耗时时间,比如:「发送短信、邮件、异步更新等」,这些都是典型的可以通过异步实现的场景。二、异步的八种实现方式线程ThreadFuture异步框架CompletableFutureSpring注解@AsyncSpring ApplicationEvent事件消息队列第三方异步框架...
2023-04-03 08:18:08
123
转载 一篇搞定Nginx功能
引言一、性能怪兽-Nginx概念深入浅出二、Nginx环境搭建三、Nginx反向代理-负载均衡四、Nginx动静分离五、Nginx资源压缩六、Nginx缓冲区七、Nginx缓存机制八、Nginx实现IP黑白名单九、Nginx跨域配置十、Nginx防盗链设计十一、Nginx大文件传输配置十二、Nginx配置SLL证书十三、Nginx的高可用十四、Nginx性能优化十五、放在最后的结尾引言早期的业务都...
2023-03-29 07:49:36
79
转载 支付系统-会计核心
一、复式记账第一个问题:如何理解账务系统单边记账,会计系统复式记账?有些公司内部账户之间转账都采用复式记账法,如充值、提现交易,他们在账务系统都记单边流水,等和银行对账后,在会计系统复式记账。1.1、以充值为例用户充值:秋秋支付宝充值100 元,那么在账务系统里面单边记账,主要就是如下的流水信息:若有N 多条充值的流水,在账务系统中会记录客户分户N多条账务流水,并实时更新外部分户的流水和分户余额。...
2023-03-28 08:18:09
88
转载 Nginx如何分割日志
nginx 默认没有提供对日志文件的分割功能,所以随着时间的增长,access.log 和 error.log 文件会越来越大,尤其是 access.log,其日志记录量比较大,更容易增长文件大小。影响日志写入性能分割 nginx 日志的方法有很多,这里推荐利用 Logrotate 来完成。Logrotate 用法1. 安装logrotate 是一个 Linux系统日志的管理工具。可以对单个日志文...
2023-03-24 08:42:05
56
转载 通用支付系统设计和架构
更多内容关注微信公众号:fullstack888支付永远是一个公司的核心领域,因为这是一个有交易属性公司的命脉。那么,支付系统到底长什么样,又是怎么运行交互的呢?抛开带有支付牌照的金融公司的支付架构,下述链路和系统组成基本上符合绝大多数支付场景。其实整体可以看成是交易核心+支付核心 两个大系统。交易系统关联了业务场景和底层支付,而支付系统完成了调用支付工具到对账清算等一系列相关操作。下面我们就来一...
2023-03-23 08:18:02
37
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人