波斯马BOSSMA Information Technology

2022年 发布的所有日志

.NET服务治理之限流中间件-FireflySoft.RateLimit

发布时间:2022年7月4日 / 分类:DOTNET / 抢沙发

概述 FireflySoft.RateLimit自2021年1月发布第一个版本以来,经历了多次升级迭代,目前已经十分稳定,被很多开发者应用到了生产系统中,最新发布的版本是3.0.0。 Github:https://github.com/bosima/FireflySoft.RateLimit码云:https://gitee.com/bosima/FireflySoft.R...

C#实现一个万物皆可排序的队列

发布时间:2022年7月3日 / 分类:DOTNET / 抢沙发

需求 产品中需要向不同的客户推送数据,原来的实现是每条数据产生后就立即向客户推送数据,走的的是HTTP协议。因为每条数据都比较小,而数据生成的频次也比较高,这就会频繁的建立HTTP连接,而且每次HTTP传输中携带的业务数据都很小,对网络的实际利用率不高。希望能够提高...

C#生成putty格式的ppk文件(支持passphrase)

发布时间:2022年6月30日 / 分类:DOTNET, Tools / 抢沙发

背景 2022国家级护网行动即将开启,根据阿里云给出的安全建议,需要将登陆Linux的方式改为密钥对方式。我这里使用的远程工具是自己开发的,能够同时管理Windows和Linux,但是以前不支持密钥对的登陆方式,所以需要改造一下。 护网行动是什么?护网行动从2016年开始,是...

Go实现安全双检锁的方法和最佳实践

发布时间:2022年5月27日 / 分类:Go / 抢沙发

不安全的双检锁 从其他语言转入Go语言的同学经常会陷入一个思考:如何创建一个单例? 有些同学可能会把其它语言中的双检锁模式移植过来,双检锁模式也称为懒汉模式,首次用到的时候才创建实例。大部分人首次用Golang写出来的实例大概是这样的: type Conn struct { ...

Golang:将日志以Json格式输出到Kafka

发布时间:2022年5月16日 / 分类:Go / 抢沙发

在上一篇文章中我实现了一个支持Debug、Info、Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手。有兴趣的可以通过这个链接前往:https://github.com/bosima/ylog/releases/tag/v1.0.2 工程实践中,我们往往还需要对日志进行采集,将日志归集到...

Golang:手撸一个支持六个级别的日志库

发布时间:2022年5月15日 / 分类:Go / 抢沙发

Golang标准日志库提供的日志输出方法有Print、Fatal、Panic等,没有常见的Debug、Info、Error等日志级别,用起来不太顺手。这篇文章就来手撸一个自己的日志库,可以记录不同级别的日志。 其实对于追求简单来说,Golang标准日志库的三个输出方法也够用了,理解起来也很容易...

使用grpcurl测试gRPC服务

发布时间:2022年5月11日 / 分类:Tools / 抢沙发

grpcurl可以像curl访问http服务一样访问gRPC服务,所以可以用来测试gRPC服务是否正常。 假设有这样一个服务,proto定义为: syntax = "proto3"; option go_package="/proto"; package Business; service Hello { rpc Say (SayRequest) returns...

go-micro集成RabbitMQ实战和原理

发布时间:2022年5月7日 / 分类:Go / 抢沙发

在go-micro中异步消息的收发是通过Broker这个组件来完成的,底层实现有RabbitMQ、Kafka、Redis等等很多种方式,这篇文章主要介绍go-micro使用RabbitMQ收发数据的方法和原理。 Broker的核心功能 Broker的核心功能是Publish和Subscribe,也就是发布和订阅。它们的定义是:...

sqlx操作MySQL实战及其ORM原理 

发布时间:2022年5月6日 / 分类:Go / 抢沙发

sqlx是Golang中的一个知名三方库,其为Go标准库database/sql提供了一组扩展支持。使用它可以方便的在数据行与Golang的结构体、映射和切片之间进行转换,从这个角度可以说它是一个ORM框架;它还封装了一系列地常用SQL操作方法,让我们用起来更爽。 sqlx实战 这里以操作My...

go-micro集成链路跟踪的方法及其中间件原理

发布时间:2022年5月5日 / 分类:Go / 抢沙发

前几天有个同学想了解下如何在go-micro中做链路跟踪,这几天正好看到wrapper这块,wrapper这个东西在某些框架中也称为中间件,里边有个opentracing的插件,正好用来做链路追踪。opentracing是个规范,还需要搭配一个具体的实现,比如zipkin、jeager等,这里选择zipkin。 ...