Browsed by
分类:Performance

高性能短链设计

高性能短链设计

閱讀本文約花費: 17 (分鐘) 前言 今天,我们来谈谈如何设计一个高性能短链系统,短链系统设计看起来很简单,但每个点都能展开很多知识点,也是在面试中非常适合考察侯选人的一道设计题,本文将会结合我们生产上稳定运行两年之久的高性能短链系统给大家简单介绍下设计这套系统所涉及的一些思路,希望对大家能有一些帮助。 本文将会从以下几个方面来讲解,每个点包含的信息量都不少,相信大家看完肯定有收获 短链有啥好处,用长链不香吗短链跳转的基本原理短链生成的几种方法高性能短链的架构设计 注:里面涉及到不少布隆过滤器,snowflake 等技术,由于不是本文重点,所以建议大家看完后再自己去深入了解,不然展开讲篇幅会很长 短链有啥好处,用长链不香吗 来看下以下极客时间发我的营销短信,点击下方蓝色的链接(短链) 浏览器的地址栏上最终会显示一条如下的长链。 那么为啥要用短链表示,直接用长链不行吗,用短链的话有如下好外 1、链接变短,在对内容长度有限制的平台发文,可编辑的文字就变多了 最典型的就是微博,限定了只能发 140 个字,如果一串长链直接怼上去,其他可编辑的内容就所剩无几了,用短链的话,链接长度大大减少,自然可编辑的文字多了不少。 再比如一般短信发文有长度限度,如果用长链,一条短信很可能要拆分成两三条发,本来一条一毛的短信费变成了两三毛,何苦呢。另外用短链在内容排版上也更美观。 2、我们经常需要将链接转…

Read More Read More

10分钟带你逆袭Kafka!

10分钟带你逆袭Kafka!

閱讀本文約花費: 56 (分鐘) Apache Kafka 是一个快速、可扩展的、高吞吐的、可容错的分布式“发布-订阅”消息系统, 使用 Scala 与 Java 语言编写,能够将消息从一个端点传递到另一个端点。较之传统的消息中间件(例如 ActiveMQ、RabbitMQ),Kafka 具有高吞吐量、内置分区、支持消息副本和高容错的特性,非常适合大规模消息处理应用程序。 从未如此简单:10分钟带你逆袭Kafka! Kafka 官网: http://kafka.apache.org/ Kafka 主要设计目标如下: 以时间复杂度为 O(1) 的方式提供消息持久化能力,即使对 TB 级以上数据也能保证常数时间的访问性能。高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒 100K 条消息的传输。支持 Kafka Server 间的消息分区,及分布式消费,同时保证每个 Partition 内的消息顺序传输。同时支持离线数据处理和实时数据处理。支持在线水平扩展。 Kafka 通常用于两大类应用程序: 建立实时流数据管道,以可靠地在系统或应用程序之间获取数据。构建实时流应用程序,以转换或响应数据流。 要了解 Kafka 如何执行这些操作,让我们从头开始深入研究 Kafka 的功能。首先几个概念: Kafka 在一个或多个可以跨越多个数据中心的服务器上作为集群运行。Kafka 集群将记…

Read More Read More

kafka平台架构

kafka平台架构

閱讀本文約花費: 1 (分鐘) Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 Kafka基本架构介绍 kafka架构原理 [图文]消息队列 [图文]kafka-0.10 知识点总结 [图文]消息中间件Kafka资料 图文:Kafka架构设计与实施 kafka中文文档 kafka介绍与概念 – 图文 [图文]Kafka介绍 Kafka安装配置及使用说明 kafka架构与原理 Kafka的架构原理,你真的理解吗? 课程: Kafka原理与实践 课程:Kafka 原理剖析及实战演练 

效率提升工具集合part01

效率提升工具集合part01

閱讀本文約花費: 8 (分鐘) 开发工具简述BeyondCompareBeyond Compare是一套由Scooter Software推出的文件比较工具。主要用途是对比两个文件夹或者文件,并将差异以颜色标示。比较范围包括目录,文档内容等。AxureAxure RP是美国Axure Software Solution公司旗舰产品,是一个专业的快速原型设计工具,让负责定义需求和规格、设计功能和界面的专家能够快速创建应用软件或Web网站的线框图、流程图、原型和规格说明文档。作为专业的原型设计工具,它能快速、高效的创建原型,同时支持多人协作设计和版本控制管理  。TypeAndRunTypeAndRun (TAR) 是一个可以用热键呼出的控制台,从这个控制台上你可以运行任何程序、打开各类文档、URL、电子邮件和文件目录.除了可以方便的为自己的常用程序建立别名,TypeAndRun 也内置了大量”系统别名”用自定义的快捷键调出命令行后,输入别名即可可以执行相应操作.而且TypeAndRun 可以为已经建立的别名自动补全,无需记住全部名称.也不用像一些快捷键工具一样要记住那么多快捷键.JMeterApache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它…

Read More Read More

PLSQL Developer常用设置及快捷键

PLSQL Developer常用设置及快捷键

閱讀本文約花費: 7 (分鐘) 1、登录后默认自动选中My Objects (已验证可用)    默认情况下,PLSQL Developer登录后,Brower里会选择All objects,如果你登录的用户是dba,要展开tables目录,正常情况都需要Wait几秒钟,而选择My Objects后响应速率则是以毫秒计算的。 设置方法:Tools菜单 –> Brower Filters,会打开Brower Folders的定单窗口,把“My Objects”设为默认即可。Tools菜单--Brower Folders,中把你经常点的几个目录(比如:Tables Views Seq Functions Procedures)移得靠上一点,并加上颜色区分,这样你的平均寻表时间会大大缩短,试试看。 2、记住密码        这是个有争议的功能,因为记住密码会给带来数据安全的问题。 但假如是开发用的库,密码甚至可以和用户名相同,每次输入密码实在没什么意义,可以考虑让PLSQL Developer记住密码。 设置方法:菜单Tools –> Preferences –> Oracle –> Logon History –…

Read More Read More

后端架构师技术图谱

后端架构师技术图谱

閱讀本文約花費: 5 (分鐘) 数据结构 二叉树完全二叉树平衡二叉树二叉查找树(BST)红黑树B-,B+,B*树LSM 树队列集合链表、数组字典、关联数组栈树BitSet 常用算法 KPM 算法选择排序冒泡排序插入排序快速排序归并排序希尔排序堆排序计数排序桶排序基数排序二分查找Java 中的排序工具排序、查找算法布隆过滤器字符串比较深度优先、广度优先贪心算法回溯算法剪枝算法动态规划朴素贝叶斯推荐算法最小生成树算法最短路径算法 并发 Java中的锁和同步类公平锁 & 非公平锁悲观锁 & 乐观锁 & CASABA 问题CopyOnWrite容器RingBuffer可重入锁 & 不可重入锁互斥锁 & 共享锁死锁事务 ACID 特性事务的隔离级别多线程线程安全一致性、事务锁 操作系统 计算机原理进程线程协程Linux 设计模式 康威定律设计模式的六大原则23种常见设计模式应用场景单例模式责任链模式MVCIOCAOPUML微服务思想 运维 & 统计 & 技术支持 OpenStackDockerKVMXenOpenVZTDD 理论单元测试压力测试全链路压测A/B TestAnsiblepuppetchefJenkins环境分离常规监控APM统计分析持续集成(CI/CD)自动化运维测试虚拟化容器技术云技术DevOps文档管理 中间件 日志搜…

Read More Read More

基于k8s Prometheus+Grafana+Altermanager钉钉报警

基于k8s Prometheus+Grafana+Altermanager钉钉报警

閱讀本文約花費: 6 (分鐘) 一、概述 Alertmanager与Prometheus是相互分离的两个组件。Prometheus服务器根据报警规则将警报发送给Alertmanager,然后Alertmanager将silencing、inhibition、aggregation等消息通过电子邮件、dingtalk和HipChat发送通知。 Alertmanager处理由例如Prometheus服务器等客户端发来的警报。它负责删除重复数据、分组,并将警报通过路由发送到正确的接收器,比如电子邮件、Slack、dingtalk等。Alertmanager还支持groups,silencing和警报抑制的机制。 钉钉作为内部通讯工具,基本上大家在电脑和手机上都能用,消息可以第一时间查看,报警消息的即时性要求比较高,所以适合用钉钉通知。 二、添加钉钉机器人 请参考官方文档:自定义机器人 添加机器人后获取机器人的hook(机器人好像只能在钉钉群里面添加),在后面部署会用到。 机器人hook:https://oapi.dingtalk.com/robot/send?access_token=xxxxxx 三、配置Alertmanager Alertmanager官方文档:https://github.com/prometheus/docs/blob/db2a09a8a7e193d6e474f3…

Read More Read More

使用Prometheus Operator实现应用自定义监控

使用Prometheus Operator实现应用自定义监控

閱讀本文約花費: 9 (分鐘) 一、前言 在之前文章中为大家讲解了如何在Kubernetes集群中部署Prometheus,已经可以通过Prometheus监控Kubernetes中Pod的状态、核心组件的状态等数据。那么如何将应用自身的数据进行集成呢? 首先prometheus对收集的数据格式是有一定的要求的,具体格式如下,只有符合此格式的prometheus才会正常的采集,所以在应用中我们需要能把关键性的监控数据以此格式抛出来。 nginx_http_connections{state=”active”} 2 nginx_http_connections{state=”reading”} 0 nginx_http_connections{state=”waiting”} 1 nginx_http_connections{state=”writing”} 1 nginx_http_request_bytes_sent{host=”10.46.0.4″} 11055968 nginx_http_request_bytes_sent{host=”testservers”} 4640 nginx_http_request_time_bucket{host=”10.46.0.4″,le=”00.005″} 3960 … 至于怎么把监控指标数据抛出来,可能需要从应用本身动手。Prome…

Read More Read More

Redis 分布式锁工具类

Redis 分布式锁工具类

閱讀本文約花費: 1 (分鐘) @Component public class RedisLock { private static final Long RELEASE_SUCCESS = 1L; private static final String LOCK_SUCCESS = “OK”; private static final String SET_IF_NOT_EXIST = “NX”; // 当前设置 过期时间单位, EX = seconds; PX = milliseconds private static final String SET_WITH_EXPIRE_TIME = “EX”; //lua private static final String RELEASE_LOCK_SCRIPT = “if redis.call(‘get’, KEYS[1]) == ARGV[1] then return redis.call(‘del’, KEYS[1]) else return 0 end”; @Autowired private StringRedisTemplate redisTemplate; /** 该加锁方法仅…

Read More Read More

Nginx代理80、代理443端口的说明

Nginx代理80、代理443端口的说明

閱讀本文約花費: 2 (分鐘) 端口协议80http443https 首先要安装nginx,这里采用yum安装方式 #yum -y install nginx安装完成后编辑其配置文件 #vim /etc/nginx/nginx.conf 配置代理80端口 server { listen 80; server_name www.prometheus.test.com; #自定义域名 root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://192.168.100.158:9090; #填写对应主机IP } } 配置代理443端口 因https方式需要涉及到证书,我这里使用openssl自创建证书 #openssl genrsa -out tls.key 2048 #openssl req -new -x509 -days 365 -key tls.key -out tls.crt -subj /C=CN/ST=Beijingshi/L=Beijing/O=devops/CN=cn server { listen 80; listen 443…

Read More Read More