分类 computer science 计算机科学 下的文章

bjmayor发布于2021-09-01

开放分布式追踪(OpenTracing)入门与 Jaeger 实现

开放分布式追踪(OpenTracing)入门与 Jaeger 实现

原文链接

简介: 分布式系统的运维挑战 容器、Serverless 编程方式的诞生极大提升了软件交付与部署的效率。在架构的演化过程中,可以看到两个变化: 应用架构开始从单体系统逐步转变为微服务,其中的业务逻辑随之而来就会变成微服务之间的调用与请求。

阅读全文»

bjmayor发布于2021-08-31

go-zero 服务自适应降载保护设计

服务自适应降载保护设计

[TOC]

设计目的

  • 保证系统不被过量请求拖垮
  • 在保证系统稳定的前提下,尽可能提供更高的吞吐量

设计考虑因素

  • 如何衡量系统负载

    • 是否处于虚机或容器内,需要读取cgroup相关负载
    • 用1000m表示100%CPU,推荐使用800m表示系统高负载
  • 尽可能小的Overhead,不显著增加RT

  • 不考虑服务本身所依赖的DB或者缓存系统问题,这类问题通过熔断机制来解决

阅读全文»

bjmayor发布于2021-08-31

一致性hash算法

[TOC]

一致性hash算法。用于解决memcached/redis 增减服务器时,尽量保持key依然命中之前的server的解决方案。

场景

假设我们有一个网站,最近发现随着流量增加,服务器压力越来越大,之前直接读写数据库的方式不太给力了,于是我们想引入Memcached作为缓存机制。现在我们一共有三台机器可以作为Memcached服务器,如下图所示。

在此输入图片描述

阅读全文»

bjmayor发布于2021-08-31

redis参考

[TOC]

REmote DIctionary Server(Redis) ,它通常被称为数据结构服务器。比memcache强在:

  1. 支持丰富的数据类型: String, List, Set, Sorted Set, Hash等。
  2. 支持2种持久化:快照和追加。
  3. 支持主从复制。 这个比memcache强多了。挂了1个节点不会影响整体的缓存。

由于redis支持持久化,所以不光是缓存,同时也是一个数据库。

本篇介绍一些基本的使用。

阅读全文»

bjmayor发布于2021-08-31

埃拉托斯特尼筛法求素数

[TOC]

埃拉托斯特尼筛法求素数

算法

要得到自然数n以内的全部素数,必须把不大于 的所有素数的倍数剔除,剩下的就是素数。
给出要筛数值的范围n,找出以内的素数。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去……。

阅读全文»

bjmayor发布于2021-08-31

洗牌算法Fisher_Yates原理

洗牌算法Fisher_Yates原理

[TOC]

算法

http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle

简单的原理如下图所示:

原理

原理

总结下,洗牌算法Fisher_Yates的原理就是把从1到n的顺序候选集随机打乱,

做法就是

第1次从1-n的候选集合随机选个数,拿出此数,并把它从候选集合剔除(候选集合n-1)。

第2次从1-n-1的候选集合随机选个数,拿出此数,并把它从候选集合剔除(候选集合n-2)。

第2次从1-n-2的候选集合随机选个数,拿出此数,并把它从候选集合剔除(候选集合n-3)。

以此类推。

阅读全文»