🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
阿里云短信接口: https://github.com/KenmyZhang/aliyun-communicate 分布式ID雪花算法-解析 | 分布式唯一id:snowflake算法思考 zap是uber用Go语言编写的开源日志 一个类型声明语句创建了一个新的类型名称,和现有类型具有相同的底层结构。 新命名的类型提供了一个方法,用来分隔不同概念的类型,这样即使它们底层类型相同也是不兼容的。 type Celsius float64 // 摄氏温度 type Fahrenheit float64 // 华氏温度 Go实战--golang中使用JWT(JSON Web Token):https://blog.csdn.net/wangshubo1989/article/details/74529333 JWT(json web token)http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html gorm : github.com/jinzhu/gorm mysql第三方集群库 redis第三方集群库 Zookeeper 分布式锁 当用户A修改订单前,会根据订单号到Zookeeper找对应的值,如果找到了,说明有用户在操作相同订单号的数据, 这时用户A需要等待,如果没有获取到则在Zookeeper中创建订单号为5的节点, 然后在去操作数据库A,把订单5的价格改为20,然后把数据库数据同步到数据库B, 此时如果用户B想操作订单为5的数据,它先去zookeeper判断是否有值,这是肯定有,所有用户B等待,等A操作结束后, 本次会话结束,Zookeeper自动删除此节点,此时B在去操作数据库,这样就实现了分布式锁问题。 修改数据时, 判断有没有改节点,如果没有,就创建一个当前类型的节点,修改数据, 删除节点,结束 如果创建节点失败,就需要等待节点的释放 分布式锁,如果你有多个机器在访问同一个共享资源, 那么这个时候,如果你需要加个锁,让多个分布式的机器在访问共享资源的时候串行起来 那么这个时候,那个锁,多个不同机器上的服务共享的锁,就是分布式锁 分布式锁当然有很多种不同的实现方案,redis分布式锁,zookeeper分布式锁 二阶段提交 分布式锁服务:DistributedLock,根据各自的业务创建分布式锁; 价格精度问题 Price Int64 没有小数,通过专门字段表示小数位数 Decimal Int 小数位数 rpc 负载均衡方案 https://www.cnblogs.com/yjmyzz/p/rpc-load-balance-design.html 易百教程 : https://www.yiibai.com/go/golang-sha1-hashes.html Kafka入门教程 Golang实现Kafka消息发送、接收 : https://blog.csdn.net/tflasd1157/article/details/81985722 go专门提供了一个神器,go tool trace DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称, 用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合 分布式是按功能加机器,集群是按瓶颈加机器 微服务是分布式系统的一种 分布式锁比较复杂,分阶段提交相对来说比较容易 这种自旋的机制不适合client服务器较多的情况 比如上千台,一次只有一台服务器抢到锁,其他都在不停重试,这种行为跟DDoS没区别 标准的无锁队列是没有锁的,因此无法等待就绪,队列满插不进去,数据就丢了 阻塞队列使用锁解决了上面的问题,但是又牺牲了性能 自旋锁(spinlock)和互斥锁(mutex) 大端 小端和网络字节序说明 网络版贪吃蛇 : https://github.com/maq128/gosnake 可以考虑以后把zookeeper换成etcd,zk的写延迟过高,qps上不去 浅谈数据库并发控制 - 锁和 MVCC : https://draveness.me/database-concurrency-control