- 博客(16)
- 收藏
- 关注
原创 【无标题】
*背景:**面对后端多服务得场景下,我们需要对每个服务器得一些资源指标进行监控,比如服务器的cpu、内存、磁盘、端口;nginx前端的传输速度;客户端每个访问请求得时间。**问题:**假如有1000台服务器,每台服务器有10000个请求得访问时间统计比如有10ms、20ms的访问速度的用户,那么怎么找到所有数据中80分位的访问速度呢?**答:**1、最慢的显然是串行遍历所有的数据,进行从小到大排序找到排在第800000大小的数字。2、取每个服务器上前百分20的数据,然后再合起来进行排序。
2024-03-30 10:06:32
147
原创 Golang内存逃逸
golang程序变量会携带有一组校验数据,用来证明它的整个生命周期是否在运行时完全可知。如果变量通过了这些校验,它就可以在栈上分配。否则就说它 逃逸 了,必须在堆上分配。在方法内把局部变量指针返回 局部变量原本应该在栈中分配,在栈中回收。但是由于返回时被外部引用,因此其生命周期大于栈,则溢出。发送指针或带有指针的值到 channel 中。在编译时,是没有办法知道哪个 goroutine 会在 channel 上接收数据。所以编译器没法知道变量什么时候才会被释放。在一个切片上存储指针或带指针的值。
2024-02-21 11:59:31
1768
2
原创 Redis!!!启动
首先将官方的介绍翻译出来:Redis 是一种开源(BSD 许可)的内存数据结构存储,用作数据库、缓存、消息代理和流式处理引擎。Redis 提供数据结构,例如字符串、哈希、列表、集、带有范围查询的排序集、位图、超日志、地理空间索引和流。Redis 具有内置复制、Lua 脚本、LRU 逐出、事务和不同级别的磁盘持久性,并通过 Redis Sentinel 和 Redis 集群的自动分区提供高可用性。您可以对这些类型运行原子操作,例如附加到字符串;递增哈希值;将元素推送到列表中;
2023-12-15 16:34:29
353
原创 服务发现(consul)
服务发现就是类似于服务管理中心(给服务端提供服务),所有服务的启动都需要去注册自己的ip、port、服务名,在那留个记录,就像公安局,当你要去找某个服务的时候就不需要去找服务,而是去服务发现寻找,然后它在把服务的ip、port、服务名告诉你,你在去连接。传统的客户端访问服务端都是通过ip、port的方式去访问,如今随着微服务的流行,以往的系统服务变成了众多的微服务系统,因此服务的ip、port、服务名也大量增加,如果服务更换ip、port,客户端无法去更新服务的IP、port,因此服务发现诞生了。
2023-12-02 16:59:19
362
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人