从0写一个服务实现预定和实时监控

举报
码乐 发表于 2024/02/18 08:48:47 2024/02/18
【摘要】 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。