环境和脚本
> go get -u github.com/apache/rocketmq-client-go/v2
原创大约 2 分钟
环境和脚本
> go get -u github.com/apache/rocketmq-client-go/v2
环境和脚本
> go get -u github.com/go-redis/redis/v8
> go get -u github.com/aliyun/alibaba-cloud-sdk-go/services/dysmsapi
Kong | ApiSix | Trk | ApiGee | |
---|---|---|---|---|
部署模式 | 单机/集群 | 单机/集群 | 单机/集群 | 仅集群 |
数据存储 | PGSQL/Cseeandra | etcd | Redis | PGSQL/Cseeandra/Zookeeper |
是否开源 | Apache V2.0 | Apache V2.0 | MPL | 否 |
核心技术 | Nginx + LUA | Nginx + LUA | Golang | ? |
私有化部署 | 支持 | 支持 | 支持 | 不支持 |
自定义插件 | 支持 | 支持 | 支持 | 不支持 |
社区活跃度 | 高 | 高 | 高 | 中 |
yaml | 支持 | 支持 | 不支持 | 不支持 |
环境和脚本
go get -u github.com/alibaba/sentinel-golang
zipkin/sleuth | jaeger | skywalking | |
---|---|---|---|
OpenTracing兼容 | 是 | 是 | 是 |
客户端支持语言 | java, c#, go, php, python等 | java, c#, go, php, python等 | java, .net, nodejs, php, python |
存储 | es, mysql, cassandra, 内存 | es, kafka, cassandra, 内存 | es, h2, mysql, tidb, shardsphere |
传输协议支持 | http, MQ | udp/http | gRPC |
UI丰富程度 | 低 | 中 | 中 |
实现方式(代码侵入性) | 拦截请求,侵入 | 拦截请求,侵入 | 字节码注入,无侵入 |
扩展性 | 高 | 高 | 高 |
trace查询 | 支持 | 支持 | 支持 |
性能损失 | 中 | 中 | 低 |
环境和脚本
> go get -u github.com/nacos-group/nacos-sdk-go
> docker run --name nacos -e MODE=standalone -p 8848:8848 -d nacos/nacos-server
环境和脚本
> go get -u github.com/hashicorp/consul/api
> go get -u github.com/mbobakov/grpc-consul-resolver
> docker run -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8500:8500 -p 8600:8600 -d consul:1.15.4 consul agent -dev -client=0.0.0.0
# 或者本地环境运行:
> ./consul agent -dev -client=0.0.0.0
# 要测试负载均衡,可通过将同一个服务启动两次的方法来实现
# 1、先直接在goland中用源代码启动
# 2、然后在goland的Terminal启动(执行以下命令)
> cd ~/workspace-go/gomicroservice
> go run userapi/main.go
package model
import (
"gorm.io/gorm"
"time"
)
type BaseModel struct {
ID int32 `gorm:"primaryKey"`
Createtime string `gorm:"type:timestamp"`
Deletetime gorm.DeletedAt // 用于软删除字段的
Isdeleted bool
}
type User struct {
BaseModel
Username string `gorm:"index:idx_mobile;unique;type:char(11);not null"` // 手机号
Password string `gorm:"type:varchar(256);not null"`
Nickname string `gorm:"type:varchar(32);"`
Email string `gorm:"type:varchar(64);"`
Birthday *time.Time `gorm:"type:datetime"`
Gender int32 `gorm:"type:tinyint(1) comment '0女,1男';default:1"`
Role int32 `gorm:"type:tinyint(1) comment '1普通用户,2管理员';default:1"`
}
虽然Spring Cloud已经提供了Gateway组件,但它并非开箱即用的。
对于生产级别的网关来说,仍然有许多功能需要自己来做,除了上面那张图上显示的,还包括但不限于灰度路由
、IP追踪
、统一Token认证
、CORS过滤
、统一的异常处理
、黑白名单过滤
等特性,特别麻烦。