微服务004 | 缓存设计

在整个计算机科学中,缓存的概念无处不在。很大程度上是硬件资源成本和收益关系决定的。比如现代CPU都内置了三级缓存,现代计算机常见的硬盘->高速SSD->内存等逐级存储介质等。 应用程序如果要处理大量并发请求,没有有效的数据缓存策略,基本上是扛不住的。 一般我们将数据放入数据库中落地管理(比如MySQL),缓存直接用内存变量记录 ………

阅读全文

Docker可视化管理工具

Docker大行其道,在运维端给我们带来了前所未有的便利和高效,同时又具备很好的隔离性和安全性。一般我们都是远程服务器shell环境管理docker,如果管理的服务器多了,你肯定会觉得很繁琐,此时可视化管理工具将会极大提供管理效率。 这样的管理工具很多,这里重点介绍一款轻量级管理工具Portainer。他可以管理本机单台服务器,也可以批量 ………

阅读全文

MySQL002 | 性能优化参数配置

InnoDB性能优化 transaction_isolation 解读:事务隔离级别,Oracle, SQL Server等商业知名数据库默认级别为READ-COMMITTED,而MySQL默认为REPEATABLE-READ,它利用自身独有的Gap Lock解决了"幻读"。但也因为Gap Lock的缘故,相比 ………

阅读全文

MySQL001 | 主从部署整体迁移

数据库服务器极度追求稳定,一旦数据库遭遇任何异常情况,将严重影响线上业务。保证数据库服务器的稳定性和性能是所有运维人员核心的工作之一。更换新服务器在所难免,如果快速的完成数据库服务器的迁移,遇到问题如何快速解决,考验着每一个辛苦的运维人员。 这里我们主要介绍下MySQL数据库服务器的迁移情况。 停服迁移 MySQL在不停服务器迁移数据库是 ………

阅读全文

Go库001 | 常见标准库

sync.Pool Go自带了很多实用的标准库,其中sync.Pool就是用于提高内存使用效率的缓存库,而且是协程安全的。这个库被广泛使用,但是如果没有搞懂其原理,很可能存在卵用错用的情况。下面我们用一个Web开发框架中常见的上下文(RequestContext)缓存池来做介绍。 1 2 3 4 5 6 7 8 9 10 11 12 13 ………

阅读全文

Redis001 | 常用操作手册

Shell下批量操作Redis 1 2 3 4 5 6 7 8 9 # 批量删除库中的某些Key ./redis-cli -h ip -p 1001 -a xxx keys ip_* |xargs ./redis-cli -h ip -p 1001 -a xxx del ./redis-cli -h ip -p 1001 -a xxx ………

阅读全文

微服务003 | 熔断降级限流排队

微服务保护机制 熔断降级机制是对系统的防护,比如受到一些恶意攻击,那么需要熔断机制来保护系统的微服务,做出响应,避免资源被耗尽。既要能响应,又要能防护,当我们的请求达到一个负载阈值,就启用熔断,把真实接口关掉,给客户端请求一个响应,这个响应,我们可以设置。服务熔断就是对该服务的调用执行熔断,对应后续请求,不在继续调用该目标服务,而是直接返 ………

阅读全文

Mongo | 高可用部署及应急处理

首先Mongo集群的安装和部署参考以前的文章:/2021/02/07101629-install.html 高可用方案 Mongodb一共有三种集群搭建的方式 1 2 3 Replica Set(副本集)# 推荐 Sharding(切片) Master-Slaver(主从)# 目前已不推荐使用了 其中,Sharding集群也是三种集群中最 ………

阅读全文

Go随笔 | 内存占用过多对性能的影响

现代CPU一般具有三级缓存,目的是追求性价比。CPU在存取内存的时候存在缓存命中的问题,因此一般内存占用少的程序有更高的缓存命中率,一般性能会更好,但是内存占用的大小究竟对程序性能有多大影响呢?今天我们用WEB框架中常见数据结构的设计来分析一下性能。 Web框架中间件设计 在Web框架中常见的路由数据结构都是数,每个叶子节点代表一条路由, ………

阅读全文