从0写一个服务实现预定和实时监控
【摘要】 2.1 预定的主要操作直接入题。如果没有缓存服务,下载地址为: https://redis.io/download/第一步 我们需要设置一个退出帧,以方便我们 var ( msgGroup = []Message{} //消息类型 字符 closech = make(chan int) //退出标记 wg = sync.WaitGroup{...
2.1 预定的主要操作
直接入题。
如果没有缓存服务,下载地址为: https://redis.io/download/
第一步 我们需要设置一个退出帧,以方便我们
var (
msgGroup = []Message{} //消息类型 字符
closech = make(chan int) //退出标记
wg = sync.WaitGroup{}
)
设置消息格式
type Message struct {
Id string
Text string
}
首先我们需要一个服务处理程序,它帮助我们接收和显示信息。 其中主体如下:
func TcpSub(cn net.Conn) {
...
for scanner.Scan() {
txt := scanner.Text()
ids := fmt.Sprintf("M:%v", time.Now().UnixMilli())
nsg := Message{Id: ids, Text: txt}
...
}
第二,我们需要为预定操作指定订单信息。 包括搜索信息和预定门票操作
func DoBookTask() {
...
ct := "application/x-www-form-urlencoded"
for k := 0; k < 10; k++ {
visitData := map[string]string{"id": "en00029"}
PostXForm(DoTask, "/resource/search", visitData, ct)
PostXForm(DoTask, "/resource/booked", visitData, ct)
}
...
}
这里其中,已经实现了DoTask对于服务的调用封装,使用的内建net/http包, POST方法,PostXForm这也不是这里的重点。
主体服务的响应执行过程,如下
搜索记录
service.ZoosInfo={en00029 asia_owl_01 zoo.asdaliyun.com/oss/owl new one to visitor. 1672924308922 ...
搜索响应
{"code":200,
"data":{"Visits":0,"created_at":1672928426453,"founded":1672729697872,"id":"en00029","introduction":"new one to visitor.","price":10,"title":"asia_owl_01","url":"zoo.asdaliyun.com/oss/owl"},
"message":"Success"}
预定的记录
{"msg":receive bood id:en00030 verify:true}
预定响应
{"code":200,
"data":{"HttpMethod":0,"IsUsed":0,"NotifyKeyword":"","NotifyReceiverEmail":"","NotifyStatus":0,"NotifyType":0,"Protocol":0,"Remark":"","RetryInterval":0,"RetryTimes":0,"Timeout":0,"command":"1672928426454","id":737,"name":"asia_owl_01","pri_key":"id","spec":"zoo.asdaliyun.com/oss/owl","table_name":"zoo"},
"message":"Success"}
2.2 CS结构
默认的缓存服务地址为 localhost:6379
需要指定为其他服务则在 启动时指定即可,例如
./monitor.exe 192.168.3.1:6379
其结构如下
----- 21:33 logs
-a---- 17:35 440 config.yaml
-a---- 21:46 7416832 monitor.exe
-a---- 21:10 13168128 service.exe
2.3 检查并启动服务
我们启动服务前,查看缓存服务配置是否正确? 请修改为您当前的地址
reids:
addr: 'localhost:6379'
...
启动在win ./service.exe
https://github.com/hahamx/examples/tree/main/service/v1_monitor/server.exe
启动在linux ./service
https://github.com/hahamx/examples/tree/main/service/v1_monitor/server
提示信息如下
服务模式:GIN_MODE ,配置:./config.yaml
this is service init.
Server start Port at:":8080"
3 小结
本节基于框架的服务帮助我们理解服务逻辑。 输入,参数校验,错误处理,输出管理,实时监控等等。
若有兴趣可以查看,该服务 示例程序。
https://github.com/hahamx/examples/tree/main/service/v1_monitor/monitor
下一节我们实现一些简单的界面来展示数据和用户订阅信息。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)