自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(111)
  • 资源 (3)
  • 收藏
  • 关注

转载 virsh管理虚拟机的命令行工具

virsh 管理虚拟机

2024-05-23 17:57:46 237

原创 PHP-FPM进程排查

3.查看PHP-FPM在你的机器上的平均内存占用。4.查看单个php-fpm进程消耗内存的明细。2、查看每个php-fpm占用的内存大小。1、查看php-fpm的进程个数。

2023-08-15 10:55:44 830

原创 Kong Api Gateway

在微服务的架构中,一个应用可能背拆分许多个小的服务系统,这些小系统可能自成一体,有自己的硬件资源、数据库、框架,甚至连语言都各不相同,这些小系统通常以Restfull API风格的借口提供给前端或者其他系统调用,一个应用可能会被拆分上百上千个API,管理起来极其不变,这个时候出现了API网关,API网关提供了一个统一的入口,将流量转发给对应的后端取得数据后再一次返回,并且在次基础上提供各种认证鉴权流控等等功能让后端专心于自己的业务。统一API入口隔离后端认证鉴权流控负载均衡。

2023-01-20 00:09:44 2114 2

原创 网络协议总结

网络总结

2022-12-31 16:42:49 3539 1

原创 K8S LoadBalancer kube-vip 部署

K8S LoadBalancer kube-vip 部署

2022-11-30 11:17:17 2485

原创 CentOS7 DNS 设置

CentOS7 DNS 设置

2022-11-29 10:23:09 11351

原创 k8s 集群使用 haproxy+keepalived+nginx 实现k8s集群负载均衡

使用haproxy+keepalived实现k8s集群访问代理,并在k8s service 4层代理通过proxy protocol 获取客户端真是IP

2022-11-27 17:42:22 2065

原创 K8S自建LoadBalancer

官方网站一般只有云平台支持LoadBalancer,如果脱离云平台,自己搭建的K8S集群,Service的类型使用LoadBalancer是没有任何效果的。为了让私有网络中的K8S集群也能体验到LoadBalabcer,Metallb成为了解决方案。Metallb运行在K8S集群中,监视集群内LoadBalancer类型的服务,然后从配置的IP池中为其分配一个可用IP,以ARP/NDP或BGP的方式将其广播出去,这个可用IP成为了LoadBalancer的Url,可供集群外访问。如果在IPVS模式...

2022-06-22 15:46:04 1464

原创 k8s Get http://127.0.0.1:10252/healthz: dial tcp 127.0.0.1:10252: connect: connection refused问题解决

安装完k8s集群之后很可能会出现一下情况:出现这种情况是kube-controller-manager.yaml和kube-scheduler.yaml设置的默认端口是0,在文件中注释掉就可以了。(每台master节点都要执行操作)

2022-06-17 18:41:54 1773

原创 Centos ansible部署,启动服务失败

ansible

2022-06-17 18:34:55 1462

原创 go并发之道学习总结

go并发之道并发概述为什么并发很难?竞争条件原子性内存访问同步死锁、活锁和饥饿死锁活锁饥饿并发概述为什么并发很难?并发代码是很难构建的。它通常需要完成几个迭代才能让它按预期的方式工作,即使是这样,在某些时间点(更高的磁盘利用率、更多的用户登录到系统等)到达之前,bug在代码中存在数年的事情也不少见,以至于以前未被发现的bug在后面暴露出来。竞争条件当两个或多个操作必须按正确的顺序执行,而程序未能保证这个顺序,就会发生竞争条件。大多数情况下,这将在所谓的数据中出现,其中一个并发操作尝试读取一个变量

2022-03-08 18:02:52 764

原创 go网络编程

go网络编程架构前言Protocol Layers 协议层ISO OSI 协议OSI 层TCP/IP 协议网络网关 Gateways数据包封装 Packet encapsulation连接模型 Connection Models通信模型 Communications Models分布式计算模型客户端/服务器系统客户端/服务器应用:服务器分布组件分布Gartner 分类三层模型“胖”与“瘦”中间件模型中间件中间件示例中间件的功能连续处理故障点接受因素透明度分布式计算的八个误区Go 语言概括架构本章涵盖了分

2022-01-13 20:41:09 1323

原创 go语言必备基础技能

go语言基础知识go语言的诞生背景go语言的诞生背景Go 语言的诞生主要基于如下原因:多核服务器已经成为主流,当前的编程语言对并发的支持不是很好,不能很好地发挥多核 CPU 的威力程序规模越来越大,编译速度越来越慢,如何快速编译程序是程序的迫切的需求。现有的编程语言设计越来越复杂,由于历史的包袱,某些特性的实现不怎么优雅,程序员花费了更多的精力来应对编程语法细节而不是问题域。...

2021-12-06 23:16:28 1447

原创 使用go开发分布式websocket

使用go开发分布式websocket架构图语言与组件go语言使用到的核心包核心包的作用其他组件实现思路架构图语言与组件go语言使用到的核心包github.com/graarh/golang-socketiogithub.com/joho/godotenvgithub.com/patrickmn/go-cachegithub.com/nsqio/go-nsqgithub.com/go-redis/redisgopkg.in/olivere/elastic.v7核心包的作用git

2021-11-26 00:01:12 4132

原创 TCP/IP协议学习总结

TCP/IP协议学习总结网络基础知识连接人与人的计算机网络协议随处可见的协议协议的必要性计算机中的协议分组交换协议协议分层与OSI参考模型协议的分层OSI参考模型OSI协议与OSI参考模型OSI参考模型中各个分层的作用7层通信网络基础知识下面总结了深入理解TCP/IP所必备的基础知识,其中包括计算机与网络发展的历史及其标准化过程、OSI参考模型、网络概念的本质、网络构建的设备等。连接人与人的计算机网络计算机网络最初的目的是连接一个个独立的计算机,使它们组成一个更强有力的计算环境。简而言之,就是为了

2021-11-15 16:27:21 32009 12

原创 设计模式之禅学习总结

设计模式之禅学习总结单一职责原则 SRP里式替换原则 LSP依赖倒置原则 DIP接口隔离原则迪米特法则LoD开闭原则:单例模式单例模式的通用类图如下图单例模式的优点单例模式的缺点单例模式的使用场景工厂模式工厂方法模式的通用类图工厂模式的优点工厂方法模式的使用场景工厂方法模式的扩展抽象工厂模式抽象工厂模式的通用类图抽象工厂模式的优点抽象工厂模式的缺点抽象工厂模式的使用场景抽象工厂模式的注意事项最佳实践模板方法模式模板方法模式的定义模板方法模式的优点模板方法模式的缺点模板方法模式的使用场景最佳实践建造者模式建造

2021-10-27 19:05:16 1352

原创 Kubernetes 搭建 EFK 日志中心

Kubernetes 搭建 EFK 日志中心介绍创建 Elasticsearch 集群最后,完整 elasticsearch-statefulset.yaml 文件创建 Kibana 服务部署 Fluentd工作原理配置日志源配置路由配置Docker安装ElasticSearchElasticSearch中文分词基本概念ik分词器的安装介绍参考网站https://www.qikqiak.com/post/install-efk-stack-on-k8s/Kibana 用户指南文档:https://

2021-10-26 20:01:04 607

原创 基于kubernetes的jaeger 链路追踪部署

基于kubernetes的jaeger 链路追踪部署jaeger的相关知识介绍架构图对OpenTracing的原生支持多个存储后端jaeger-agent(代理)jaeger-collectorjaeger-queryhotrod基于k8s的jaeger安装1.configmap 部署: jaeger-config.yaml2. jaeger-query 部署安装: jaeger-query-deployment.yml3.jaeger query service的安装:jaeger-query-servi

2021-10-26 19:40:15 2665

原创 系统间通信:消息队列技术

系统间通信:消息队列技术消息队列原理消息服务结构消息协议XMPP 协议XMPP网络服务器客户端组件插件Stomp协议MQTT协议设计规范主要特性MQTT协议原理MQTT客户端MQTT服务器MQTT协议中的方法MQTT协议数据包结构AMQP 协议现在介绍系统间通信及传输方案 : 消息队列。首先会讨论消息 队列协议的基本原理和工作方式,并介绍 几种目前生产环境中常用的消息协议: MQTT、 XMPP、 Stomp, AMQP, OpenWire 等。然后在这个基础上介绍一款消息队列产品 : ActiveMQ,

2021-10-24 17:52:54 906

原创 系统容量评估和性能保障

系统容量评估和性能保障非功能质量需求的概述非功能质量需求的具体指标非功能质量需求的概述核心非功能质量指标,主要体现在高性能、高可用、可伸缩、可扩展、安全性等方面,并讲解其他非功能质 量指标, 例如:可测试性、可监控性等。核心非功能质量指标如下表所示:核心非功能质量指标描述高性能运行效率高、性价比高可用性持续可用性、缩短岩机时间、出错恢复、可靠性可伸缩性垂直伸缩、水平伸缩可扩展性可插拔、组件重用安全性数据安全、加密、熔断、防攻击这里,对于一个

2021-10-24 17:23:07 2407

原创 从0开始学架构总结

从0开始学架构总结架构设计三原则合适原则简单原则演化原则小结:架构设计流程:识别复杂度如何识别复杂度小结架构设计流程:设计备选方案第一种常见的错误:设计最优秀的方案第二种常见的错误:只做一个方案小结架构设计流程:评估和选择备选方案评估和选择备选方案小结架构设计流程:详细方案设计方案设计需要注意的事项小结高性能数据库集群:读写分离读写分离原理复制延迟分配机制小结高性能数据库集群:分库分表业务分库分表小结高性能NoSQL常见的NoSQL方案分为4类:小结高性能缓存架构缓存的架构设计要点缓存穿透缓存雪崩实现方式小

2021-10-21 11:39:03 1697 4

原创 Linux性能工具:系统CPU

Linux性能工具:系统CPUCPU 性能统计信息运行队列统计上下文切换中断CPU 使用率CPU性能工具vmstat(虚拟内存统计)工具是追踪性能问题时的第一道防线。它们能展示整个系统的性能情况和哪些部分表现不好。现在我们将学习这些工具可以测量的统计信息,以及如何使用各种工具收集这些统计结果。学习完成后,我们将能够:理解系统级性能的基本指标,包括CPU的使用情况。明白哪些工具可以检索这些系统性能指标。CPU 性能统计信息每一种系统级 Linux 性能工具都提供了不同的方式来提取相似的统计结果。

2021-10-20 14:06:36 8160

原创 性能追踪建议

性能追踪建议常用建议记大量的笔记(记录所有的事情)自动执行重复任务尽可能选择低开销工具使用多个工具来搞清楚问题相信我们的工具利用其他人的经验(慎重)性能调查概要常用建议记大量的笔记(记录所有的事情)在调查性能问题时,我们可以做的最重要的事情大概就是记录下看到的每一个输出、执行的每一条命令,以及研究的每一个信息。结构清晰的记录能让我们只查看记录就可以检验关于性能问题原因的猜想,而不是重新运行测试。这能节约大量时间。写下来并且创建性能记录。在性能调查之初,通常会为其创建一个目录,在GUN Emacs中打

2021-10-12 19:08:26 305

原创 架构设计手册

架构设计参考手册系统设计的一些原则在设计系统时,应该多思考墨菲定律在系统划分时,也要思考康威定律高并发原则高可用原则业务设计原则总结负载均衡与反向代理Nginx负载均衡算法失败重试健康检查备份上游服务器不可用上游服务器隔离线程隔离进程隔离集群隔离机房隔离读写隔离动静隔离爬虫隔离热点隔离资源隔离使用Hystrix实现隔离限流详解限流算法应用级限流分布式限流接入层限流降级降级预案自动开关降级人工开关降级超时与重试机制代理层超时与重试web容器超时数据库 | NoSql连接超时业务超时回滚机制事务回滚代码回滚部署

2021-10-08 19:33:58 1568

原创 性能之巅:洞悉系统、企业与云计算——网络

性能之巅:洞悉系统、企业与云计算——网络术语模型网络接口控制器协议栈概念网络和路由协议封装包长度延时主机名解析延时ping 延时连接延时首字节延时往返时间连接生命周期缓冲连接积压队列接口协商使用率本地连接架构协议TCP三次握手重复确认检测阻塞控制:Reno 和 TahoeNagle 算法延时 ACKSACK 与 FACKUDP硬件接口随着系统变得越来越分布化,尤其是云计算环境中,网络在性能方面扮演着的角色越来越重要。除了改进网络延时和吞吐量以外,另一个常见的任务是消除可能有丢包引起的延时异常。网络分析是

2021-10-04 21:03:53 22324

原创 限流量控制:高并发系统中我们如何操纵流量?

限流量控制:高并发系统中我们如何操纵流量?究竟什么是限流应该知道的限流算法固定窗口与滑动窗口的算法漏桶算法与令牌筒算法总结如果系统的峰值流量会超过了预估的峰值,对于核心服务也产生了比较大的影响,而我们总不能把核心服务整体降级吧?那么在这个时候要如何保证服务的稳定性呢?你认为可以使用限流的方案。而提到限流,相信我们多多少少在以下几个地方出错过:限流算法选择不当,导致限流效果不好;开启了限流却发现整体性能有损耗;只实现了单机的限流却没有实现整体系统的限流;说白了,之所以出现这些问题还是对限流的算法

2021-10-02 14:26:15 1847

原创 应用性能管理:用户的使用体验应该如何监控?

应用性能管理:用户的使用体验应该如何监控?如何搭建 APM 系统需要监控用户的哪些信息总结我们了解了服务端监控搭建的过程。有了监控报表之后,团队在维护垂直电商系统时,就可以更早地发现问题,也有直观的工具辅助我们分析排查问题了。但是有一些问题,服务端的监控报表无法排查,甚至无法感知。比如,有用户反馈创建订单失败,但是从服务端的报表来看,并没有什么明显的性能波动,从存储在 Elasticsearch 里的原始日志中,甚至没有找到这次创建订单的请求。这有可能是客户端有 Bug,或者网络抖动导致创建订单的请求并

2021-10-02 14:02:50 296

原创 给系统加上眼睛:服务端监控要怎么做?

给系统加上眼睛:服务端监控要怎么做?监控指标如何选择如何采集数据指标监控数据的处理和存储总结在一个项目的生命周期里,运行维护占据着很大的比重,在重要性上,它几乎与项目研发并 驾齐驱。而在系统运维过程中,能够及时地发现问题并解决问题,是每一个团队的本职工 作。所以,我们的系统在搭建之初,运维团队肯定完成了对于机器 CPU、内存、磁 盘、网络等基础监控,期望能在出现问题时,及时地发现并且处理。本以为万事大吉,却没想到系统在运行过程中,频频得到用户的投诉,原因是:使用的数据库主从延迟变长,导致业务功能上出现

2021-10-02 13:44:16 276

原创 多机房部署:跨地域的分布式系统如何做?

多机房部署:跨地域的分布式系统如何做?多机房部署的难点是什么?逐步迭代多机房部署方案同城双活异地多活总结多机房部署的难点是什么?多机房部署的含义是:在不同的 IDC 机房中,部署多套服务,这些服务共享同一份业务数据,并且都可以承接来自用户的流量。这样,当其中某一个机房出现网络故障、火灾,甚至整个城市发生地震、洪水等大的不可抗的灾难时,你可以随时将用户的流量切换到其它地域的机房中,从而保证系统可以不间断地持续运行。这种架构听起来非常美好,但是在实现上却是非常复杂和困难的,那么它复杂在哪儿呢?假如我们有

2021-09-25 19:12:14 2627

原创 负载均衡:怎样提升系统的横向扩展能力?

负载均衡:怎样提升系统的横向扩展能力?负载均衡服务器的种类常见的负载均衡策略有哪些如何检测节点是否故障总结在实际的工作中,我们经常使用的负载均衡的组件应该算是 Nginx,它的作用是承接前端的 HTTP 请求,然后将它们按照多种策略,分发给后端的多个业务服务器上。这样,我们可以随时通过扩容业务服务器的方式,来抵挡突发的流量高峰。与 DNS 不同的是, Nginx 可以在域名和请求 URL 地址的层面做更细致的流量分配,也提供更复杂的负载均衡策略。我们可能会想到,在微服务架构中,我们也会启动多个服务节点,

2021-09-25 18:46:55 809

原创 性能之巅:洞悉系统、企业与云计算——磁盘

性能之巅:洞悉系统、企业与云计算——磁盘术语模型简单磁盘缓存磁盘控制器概念测量时间计算时间时间尺度缓存随机 vs 连续 I/O磁盘 I/O 可能会造成严重的应用程序延时,因此是系统分析的一个重要目标。在高负载下,磁盘成为瓶颈,CPU持续空闲以等待磁盘 I/O 结束。发现并消除这些瓶颈能让性能和应用程序吞吐量翻好几倍。磁盘指系统的主要存储设备。这包括了旋转磁性盘片和基于闪存的固态盘(SSD)。引入后者主要是为了提高磁盘的 I/O 性能,而事实上的确做到了。然而,对容量和 I/O 速率的需求仍在不断增长,闪

2021-09-25 17:23:57 463

原创 RPC框架:10万QPS下如何实现毫秒级的服务调用?

RPC框架:10万QPS下如何实现毫秒级的服务调用?RPC如何提升网络传输性能选择合适的序列化方式总结:我们已经决定对系统做服务化拆分,以便解决扩展性和研发成本高的问题。与此同时,我们在不断学习的过程中还发现,系统做了服务化拆分 之后,会引入一些新的问题,这些问题我在上节课提到过,归纳起来主要是两点:服务拆分单独部署后,引入的服务跨网络通信的问题;在拆分成多个小服务之后,服务如何治理的问题;如果想要解决这两方面问题,就需要了解,微服务化所需要的中间件的基本原理,和使用技巧,我们先解决第一点问题的

2021-09-24 00:19:39 810

原创 系统架构:每秒1万次请求的系统要做服务化拆分吗?

系统架构:每秒1万次请求的系统要做服务化拆分吗?一体化架构的痛点如何使用微服务化解决这些痛点那么我们怎么解决这个问题呢?总结现在,我们的系统运行稳定,好评不断,每天高峰期的流量,已经达到了 10000/s 请求, DAU 也涨到了几十万。 领导非常高兴,打算继续完善产品功能,以便进行新一轮的运营推 广,争取在下个双十一可以将 DAU 冲击过百万。这时,我们开始考虑,怎么通过技术上的 优化改造,来支撑更高的并发流量,比如支撑过百万的 DAU。于是,我们重新审视了自己的系统架构,分析系统中有哪些可以优化的点

2021-09-23 23:29:54 508

原创 消息队列:如何降低消息队列系统中消息的延迟?

消息队列:如何降低消息队列系统中消息的延迟?如何监控消息延迟减少消息延迟的正确姿势总结我们知道了如何使用消息队列应对秒杀时的峰值流量已经有所了解。当然了,你也应该知道要如何做,才能保证消息不会丢失,尽量避免消息 重复带来的影响。那么我们在使用消息队列时:除了这些内容,还需要关注哪些点呢?先来看一个场景:在我们的电商项目中,会在用户下单支付之后,向消息队列里面发送 一条消息,队列处理程序消费了消息后,会增加用户的积分,或者给用户发送优惠券。那么用户在下单之后,等待几分钟或者十几分钟拿到积分和优惠券是可以接

2021-09-23 00:05:12 618

原创 消息投递:如何保证消息仅仅被消费一次?

消息投递:如何保证消息仅仅被消费一次?消息为什么会丢失如何保证消息只被消费一次总结:我们在电商系统中增加了消息队列,用它来对峰值写流量做削峰填谷,对次要的业务逻辑做异步处理,对不同的系统模块做解耦合。因为业务逻辑从同步代码中移除 了,所以,我们也要有相应的队列处理程序来处理消息、执行业务逻辑,这时,我们的系统架构变成了下面的样子:这是一个简化版的架构图,实际上,随着业务逻辑越来越复杂,会引入更多的外部系统和服务来解决业务上的问题。比如说,我们会引入 Elasticsearch 来解决商品和店铺搜索的问

2021-09-22 23:41:11 825

原创 消息队列:秒杀时如何处理每秒上万次的下单请求?

消息队列:秒杀时如何处理每秒上万次的下单请求?我所理解的消息队列削去秒杀场景下的峰值写流量通过异步处理简化秒杀请求中的业务流程解耦实现秒杀系统模块之间松耦合总结我们了解了高并发系统设计的三个目标:性能、可用性和可扩展性,而在提升系统性能方面,我们一直关注的是系统的查询性能。也学习了数据库的分布式改造,各类缓存的原理和使用技巧。究其原因在于,我们遇到的大部分场景都是读多写少,尤其是在一个系统的初级阶段。比如说,一个社区的系统初期一定是只有少量的种子用户在生产内容,而大部分的用户都 在“围观”别人在说什么。

2021-09-22 23:02:32 833

原创 CDN:静态资源如何加速?

CDN:静态资源如何加速?静态资源加速的考虑点CDN 的关键技术总结现在,我们应该对包括本地 缓存、分布式缓存等缓存组件的适用场景和使用技巧有了一定了解了。结合我们前面学过的客户端高可用方案,我们会将单个缓存节点扩展为高可用的缓存集群,现在,我们的系统架构演变成了下面这样:在这个架构中我们使用分布式缓存对动态请求数据的读取做了加速,但是在我们的系统中存在着大量的静态资源请求:对于移动 APP 来说,这些静态资源主要是图片、视频和流媒体信息。对于 Web 网站来说,则包括了 JavaScript

2021-09-21 23:30:11 1248

原创 缓存的使用姿势(3):缓存穿透了怎么办?

缓存的使用姿势(3):缓存穿透了怎么办?什么是缓存穿透缓存穿透的解决方案回种空值使用布隆过滤器总结我们应该知道,对于缓存来说,命中率是它的生命线。在低缓存命中率的系统中,大量查询商品信息的请求会穿透缓存到数据库,因为数据库对于并发的承受能力是比较脆弱的。一旦数据库承受不了用户大量刷新商品页面、定向搜索衣服信息,就会导致查询变慢,导致大量的请求阻塞在数据库查询上,造成应用服务器的连接和线程资源被占满,最终导致电商系统崩溃。一般来说,我们的核心缓存的命中率要保持在 99% 以上,非核心缓存的命中率也要尽量

2021-09-21 17:00:14 140

原创 缓存的使用姿势(2):缓存如何做到高可用?

缓存的使用姿势(2):缓存如何做到高可用?客户端方案中间代理层方案服务端方案总结我们了解了缓存的原理、分类以及常用缓存的使用技巧。我们开始用缓存承担大部分的读压力,从而缓解数据库的查询压力,在提升性能的同时保证系统的稳定性。这时,我们的系统整体的架构演变成下图的样子:我们在 Web 层和数据库层之间增加了缓存层,请求会首先查询缓存,只有当缓存中没有需要的数据时才会查询数据库。在这里,我们需要关注缓存命中率这个指标(缓存命中率 = 命中缓存的请求数 / 总请求数)。一般来说,在我们的电商系统中,核心缓

2021-09-21 15:17:50 391

原创 缓存的使用姿势(1):如何选择缓存的读写策略?

缓存的使用姿势(1):如何选择缓存的读写策略?Cache Aside(旁路缓存)策略Read / Write Through(读穿 / 写穿)策略Write Back(写回)策略总结我们可能觉得缓存的读写很简单,只需要优先读缓存,缓存不命中就从数据库查询,查询到了就回种缓存。实际上,针对不同的业务场景,缓存的读写策略也是不同的。而我们在选择策略时也需要考虑诸多的因素,比如说,缓存中是否有可能被写入脏数据,策略的读写性能如何,是否存在缓存命中率下降的情况等等。接下来,就以标准的“缓存 + 数据库”的场景为

2021-09-21 14:47:31 259

go语言并发之道.xmind

go语言并发之道

2021-06-28

数据中台:让数据用起来.xmind

数据中台:让数据用起来思维导图+总结笔记

2021-05-25

高可用mysql

高可用mysql 构建健壮的数据中心!服务端开发必读!希望大家喜欢

2018-07-30

空空如也

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

TA关注的人

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