【Tars-go】腾讯微服务框架学习使用02-- http 服务

这篇具有很好参考价值的文章主要介绍了【Tars-go】腾讯微服务框架学习使用02-- http 服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2 http 服务

官方文档说http这里是在net/http原生包的基础上做了修改。

官方给的案例:

package main

import (
	"net/http"
	"github.com/TarsCloud/TarsGo/tars"
)

func main() {
	mux := &tars.TarsHttpMux{}
	mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		w.Write([]byte("Hello tafgo"))
	})

    cfg := tars.GetServerConfig()
	tars.AddHttpServant(mux, cfg.App+"."+cfg.Server+".HttpObj") //Register http server
	tars.Run()
}

可以看到 在初始化了TarsHttpMux, 再将TarsHttpMux 注册到tars框架中作为servant就可以启动http服务。

  1. TarsHttpMux是什么:

    1. // TarsHttpMux is http.ServeMux for tars http server.
      type TarsHttpMux struct {
      	http.ServeMux
      	cfg *TarsHttpConf
      }
      

      可以看出TarsHttpMux确实就只是对http.ServeMux做了个包装加入了Conf 并加入了上报状态信息、计算耗时等基本服务器功能。

  2. TarsHttpMux 注册到tars框架中作为servant:

    1. tars.AddHttpServant的底层实现函数如下:

    2. // AddHttpServantWithExceptionStatusChecker add http servant handler with exceptionStatusChecker for obj.
      func (a *application) AddHttpServantWithExceptionStatusChecker(mux HttpHandler, obj string, exceptionStatusChecker func(int) bool) {
      	cfg, ok := a.tarsConfig[obj]
      	if !ok {
      		msg := fmt.Sprintf("http servant obj name not found: %s", obj)
      		ReportNotifyInfo(NotifyError, msg)
      		TLOG.Debug(msg)
      		panic(errors.New(msg))
      	}
      	TLOG.Debugf("add http protocol server: %+v", cfg)
      	a.objRunList = append(a.objRunList, obj)
      	addrInfo := strings.SplitN(cfg.Address, ":", 2)
      	var port int64
      	if len(addrInfo) == 2 {
      		var err error
      		port, err = strconv.ParseInt(addrInfo[1], 10, 32)
      		if err != nil {
      			panic(fmt.Errorf("http server listen port: %s parse err: %v", addrInfo[1], err))
      		}
      	}
      	svrCfg := a.ServerConfig()
      	httpConf := &TarsHttpConf{
      		Container:              svrCfg.Container,
      		AppName:                fmt.Sprintf("%s.%s", svrCfg.App, svrCfg.Server),
      		Version:                svrCfg.Version,
      		IP:                     addrInfo[0],
      		Port:                   int32(port),
      		SetId:                  svrCfg.Setdivision,
      		ExceptionStatusChecker: exceptionStatusChecker,
      	}
      	mux.SetConfig(httpConf)
      	s := &http.Server{Addr: cfg.Address, Handler: mux, TLSConfig: cfg.TlsConfig}
      	a.httpSvrs[obj] = s
      }
      
    3. 简单来说就是将http根据配置实例化-》再注册Sever-》这代码很好理解

  3. 配置文件配置servant

    <tars>
        <application>
            <server>
                <AiGo.backend.HttpObjAdapter>
                    allow
                    endpoint=http -h 127.0.0.1 -p 18080 -t 60000
                    handlegroup=AiGo.backend.HttpObjAdapter
                    maxconns=200000
                    protocol=http
                    queuecap=10000
                    queuetimeout=60000
                    servant=AiGo.backend.HttpObj
                    shmcap=0
                    shmkey=0
                    threads=1
                </AiGo.backend.HttpObjAdapter>
            </server>
        </application>
    </tars>
    

    可以看出就protocol=http 这里改了,其他的和tars服务没啥区别。文章来源地址https://www.toymoban.com/news/detail-853795.html

到了这里,关于【Tars-go】腾讯微服务框架学习使用02-- http 服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • go语言:腾讯终于开源trpc框架——对trpc-go源码分析

    根据以上,我们对trpc框架进行三个方面的讲解 trpc配置文件采用yaml格式,文件默认目录在 ./trpc_go.yaml下,所有自定义配置都需要写在这个yaml文件中,所有支持用户自定义的配置都可以参考结构体config 简单来说干了以下几件事情 1.获取配置文件的默认目录,并且解析目录到

    2024年02月03日
    浏览(51)
  • 使用Go语言的HTTP客户端和服务器

    使用Go语言进行HTTP客户端和服务器开发是一种高效且强大的方式。Go语言的标准库提供了对HTTP协议的全面支持,使得创建HTTP客户端和服务器变得简单。 首先,让我们来看一下如何创建一个简单的HTTP服务器。在Go中,可以使用 net/http 包来创建HTTP服务器。以下是一个简单的示例

    2024年01月16日
    浏览(50)
  • 使用腾讯云服务器+Nonebot2+go-cqhttp搭建QQ聊天机器人【保姆级教程 2023最新版】

    下载go-cqhttp 这里有不同版本的cqhttp,并且对每个版本都有介绍。但是大家可以看到有 arm与adm 不同的版本,这两个啥关系呢? 严格来说, AMD和ARM没有任何关系 。AMD是桌面级处理器和桌面级GPU的生产厂商,而ARM是移动级处理器的生产厂商。AMD是目前业内唯一一个可以提供高性能

    2023年04月18日
    浏览(50)
  • go web框架 gin-gonic源码解读02————router

    本来想先写context,但是发现context能简单讲讲的东西不多,就准备直接和router合在一起讲好了 router是web服务的路由,是指讲来自客户端的http请求与服务器端的处理逻辑或者资源相映射的机制。(这里简单说说,详细的定义网上都可以查到) 那一个优秀的web router应该提供以下

    2024年02月12日
    浏览(43)
  • 字节微服务HTTP框架Hertz使用与源码分析|拥抱开源

    大家好,这里是白泽,今天介绍一个自己参与过一些维护的 HTTP 框架。 Hertz [həːts] 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttp、gin、echo 的优势, 并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广

    2024年01月19日
    浏览(40)
  • Flask框架小程序后端分离开发学习笔记《2》构建基础的HTTP服务器

    Flask是使用python的后端,由于小程序需要后端开发,遂学习一下后端开发。本节提供一个构建简单的本地服务器的代码,仔细看注释,学习每一步的流程,理解服务器接收请求,回复响应的基本原理。 代码效果,运行之后,在浏览器输入:localhost:2000 总结 1.导入socket库:这个库

    2024年01月18日
    浏览(44)
  • C++服务器框架02_日志系统02_logger

    sylar/log.h sylar/log.cpp

    2024年02月12日
    浏览(43)
  • 计算机网络学习day02|HTTP协议

    目录 一、HTTP报文格式长什么样?是如何分割的? 请求行 状态行 头部字段 常用头字段 小结 二、HTTP提供了哪些方法?GET和POST的区别是什么? 1.HTTP有哪些方法 2.GET/HEAD 3.PSOT/PUT 小结 三、URI和URL URI 的格式 URI 的基本组成 URI 的查询参数 小结 四、HTTP有哪些状态码?分别代表什

    2024年04月23日
    浏览(48)
  • HTTP 服务器(基于go实现)

    编写一个 HTTP 服务器,接收客户端 request,并将 request 中带的 header 写入 response header 编写一个 HTTP 服务器, 接收客户端 request,并将 request 中带的 header 写入 response header ,读取当前系统的环境变量中的 VERSION 配置,并写入 response header Server 端记录访问日志包括客户端 IP,HT

    2024年02月11日
    浏览(58)
  • go语言计算推算心率算法 http服务

    为了计算心率和并且将心率计算作为http服务来运行 1 基本数据 a) hrv heart rate variability b) 呼吸 2 傅里叶变换 计算频率 高频和低频 3 隐形马尔科夫 模型 hmm 重在于推测概率 根据最近的心率计算 4 神经网络计算 hrv 5 min RR 间期 平均值标准差 sdann 24h 正常的RR间期总体标准差 s

    2024年02月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包