基于 Hertz 和 Kitex 的 Go 微服务项目 | 开源项目推荐

这篇具有很好参考价值的文章主要介绍了基于 Hertz 和 Kitex 的 Go 微服务项目 | 开源项目推荐。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

FreeCar

FreeCar 是一个基于 Hertz 与 Kitex 的全栈微服务项目,欢迎 Star。

项目地址:CyanAsterisk/FreeCar

Hertz

Hertz 是一个超大规模的企业级微服务 HTTP 框架,具有高易用性、易扩展、低时延等特点。

Hertz 默认使用自研的高性能网络库 Netpoll,在一些特殊场景中,相较于 go net,Hertz 在 QPS、时延上均具有一定优势。

在内部实践中,某些典型服务,如框架占比较高的服务、网关等服务,迁移 Hertz 后相比 Gin 框架,资源使用显著减少,CPU 使用率随流量大小降低 30%—60%

关于 Hertz 更多的信息可移步至 cloudwego/hertz

技术栈

功能 实现
HTTP 框架 Hertz
RPC 框架 Kitex
数据库 MongoDB、MySQL
配置中心 Nacos
服务发现中心 Nacos
消息队列 RabbitMQ
链路追踪 Jaeger
集群监控 Prometheus
限流中间件 hertz-contrib/limiter
部署 docker-compose
对象存储 腾讯云 COS
CI GitHub Actions

项目架构

调用关系

基于 Hertz 和 Kitex 的 Go 微服务项目 | 开源项目推荐

技术架构

基于 Hertz 和 Kitex 的 Go 微服务项目 | 开源项目推荐

服务关系

基于 Hertz 和 Kitex 的 Go 微服务项目 | 开源项目推荐

页面展示

基于 Hertz 和 Kitex 的 Go 微服务项目 | 开源项目推荐

目录介绍

目录 介绍
Server 项目核心部分
Shared 可复用代码
Static 微信小程序代码

服务介绍

目录 介绍
API 基于 Hertz 的网关服务
Auth 用户认证服务
Blob 与图片和腾讯云 COS 相关的服务
Car 汽车服务
Profile 主页与图片识别服务
Trip 行程服务

快速开始

启动基础环境

make start

配置 Nacos

在浏览器上访问 http://127.0.0.1:8848/nacos/index.html#/login 进行登录。

默认命名空间以及配置组等请参考各个 config.yaml 配置文件。

基于 Hertz 和 Kitex 的 Go 微服务项目 | 开源项目推荐
基于 Hertz 和 Kitex 的 Go 微服务项目 | 开源项目推荐

关于配置中心的详细配置,详见。

生成数据表

make migrate

启动 HTTP 服务

make api

启动微服务

make auth
make blob
make car
make profile
make trip

Jaeger

在浏览器上访问 http://127.0.0.1:16686/

基于 Hertz 和 Kitex 的 Go 微服务项目 | 开源项目推荐

Prometheus

在浏览器上访问 http://127.0.0.1:3000/

基于 Hertz 和 Kitex 的 Go 微服务项目 | 开源项目推荐

API 请求

项目的 API 请求示例详见。

开发指南

通过直接阅读源码来了解此项目是非常困难的,在此提供开发指南方便开发者快速了解并上手此项目包括 Kitex、Hertz 等框架。

前置准备

通过快速开始中的命令快速启动所需的工具与环境,若需要特殊定制请修改 docker-compose.yaml 与 Nacos 配置中的内容。

IDL

在开发之前我们需要定义好 IDL 文件,其中 hz
为开发者提供了许多定制化的 api 注解。

示例代码:

namespace go auth

struct LoginRequest {
    1: string code
}

struct LoginResponse {
    1: i64 accountID
}

service AuthService {
    LoginResponse Login(1: LoginRequest req)
}

代码生成

Kitex

在新增服务目录下执行,每次仅需更改服务名与 IDL 路径。

服务端
kitex -service auth -module github.com/CyanAsterisk/FreeCar ./../../idl/auth.thrift
客户端
kitex -module github.com/CyanAsterisk/FreeCar ./../../idl/auth.thrift

注意项:

  • -module github.com/CyanAsterisk/FreeCar 该参数用于指定生成代码所属的 Go 模块,避免路径问题。
  • 当前服务需要调用其他服务时需生成客户端文件。
Hertz
初始化
hz new -idl ./../../idl/api.proto -mod github.com/CyanAsterisk/FreeCar/server/cmd/api
更新
hz update -I -idl ./../../idl/api.proto

注意项:

  • -module github.com/CyanAsterisk/FreeCar/server/cmd/api 该参数用于指定生成代码所属的 Go 模块,避免路径问题。

业务开发

在代码生成完毕后需要先将一些必须组件添加到项目中。由于 api 层不必再次添加,因此以下主要讲解关于 Kitex-Server
部分,代码位于 server/cmd 下。

Config

参考 server/cmd/auth/config,为微服务的配置结构体。

Global

参考 server/cmd/auth/global,为微服务提供可全局调用的方法。

Initialize

参考 server/cmd/auth/initialize,提供必要组件的初始化功能,其中 nacos.go flag.go logger.go 为必须项。

Tool

参考 server/cmd/auth/tool,提供微服务的工具函数,其中 port.go 为必须项。

API

在写网关层的业务逻辑时,仅需要每次更新 IDL 与新的微服务客户端代码,若需要添加新的组件直接添加即可,项目高度可拔插,架构与微服务层相似。

网关层的业务逻辑在 server/cmd/api/biz 下,大部分代码会自动生成。若需要单独新增路由需要到 server/cmd/api/router.go 中。

关于中间件的使用,只需要在 server/cmd/api/biz/router/api/middleware.go 中添加中间件逻辑即可。

许可证

FreeCar 在 GNU General Public 许可证 3.0 版下开源。

总结

这个项目还是花费的不少时间,欢迎大家学习,如果 Star 是对我们最大的鼓励!文章来源地址https://www.toymoban.com/news/detail-467808.html

参考

  • CyanAsterisk/FreeCar
  • cloudwego/hertz
  • cloudwego/kitex

到了这里,关于基于 Hertz 和 Kitex 的 Go 微服务项目 | 开源项目推荐的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 6个顶级SpringCloud微服务开源项目,企业开发必备

    今天介绍六款比较热门的SpringCloud微服务项目,感兴趣的可以clone下来研究一下,相信对你学习微服务架构很有帮助。 介绍 Cloud-Platform是国内首个基于Spring Cloud微服务化开发平台,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API 管理等多个

    2024年02月03日
    浏览(40)
  • 开源 Golang 微服务入门一: HTTP 框架 Hertz

    从本篇笔记开始将介绍 Go 框架三件套(Web / RPC / ORM),框架的学习有助于后续课程的学习以及大项目的完成。本文主要介绍字节跳动的开源 Golang 微服务 HTTP 框架 Hertz。先了解一下三件套的相关基本知识,做一下铺垫: Gorm gorm是Golang语言中一个已经迭代数十年且功能强大、性

    2024年02月08日
    浏览(29)
  • 这个开源项目,让你轻松搭建属于自己的云存储服务!

    大家好,我是 Java陈序员 。 我们在工作生活中,难免会有一些学习资料、文档,或者是生活中记录下来的精彩瞬间。大家是如何保存这些文件的呢? 可能有些文件仅仅是保存在本地的终端中,手机、电脑等。如果本地存储满了,会考虑将文件上传到云盘中。 如果你有自己的

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

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

    2024年01月19日
    浏览(27)
  • github开源学习项目推荐

    1.洛雪音乐助手桌面版 2.CS 自学指南 3.计算机书籍资源  4.Python - 100天从新手到大师 5.小林 x 图解计算机基础 洛雪音乐助手桌面版 https://github.com/lyswhut/lx-music-desktop 一个基于 electron 的音乐软件 CS 自学指南 http://如何使用这本书 - CS自学指南 https://csdiy.wiki/%E4%BD%BF%E7%94%A8%E6%8C%8

    2024年02月04日
    浏览(34)
  • 【实用的开源项目】使用服务器部署Wiki.js,一个美观且强大的开源Wiki程序

    上个月小俊介绍了一款支持跨平台、跨终端的在线文档、知识库管理程序: MrDoc觅思文档 ,后来又在寻找有没有其他的程序,这不,美观且强大的开源Wiki程序: Wiki.js ,简单使用之后,感觉还不错,也推荐给大家,现在就教大家如何部署这款程序。 官方网站: https://js.wik

    2024年01月25日
    浏览(48)
  • <开源: 推荐10个开源的前端低代码项目>

    近几年,在技术领域 低代码 是比较热门的话题,比如阿里云推出了 钉钉低代码 ,通过简单的 拖拽 、 配置 ,即可完成业务应用的搭建,腾讯云则是推出了 微搭 ,通过行业化 模板、拖放式组件和可视化配置快速构建多端应用 。 逍遥子在9月份的云栖大会上说:“新技术代

    2024年02月06日
    浏览(34)
  • 各类值得收藏的开源项目推荐介绍

    对于测开同学来讲,现在想要开发一个项目,很多时候都不需要自己从零开始重复造轮子。目前市面上已经很多大佬们开源了一些非常不错的项目可以供大家学习借鉴使用,因此本篇文章为大家介绍搜集到的一些不错的项目,希望能帮助大家站在巨人的肩膀上前行,事半功倍

    2024年02月05日
    浏览(49)
  • 一款神仙级SpringCloud微服务开源项目,接私活吊到不行!(附源码)

    今天给大家推荐一个牛逼的接私活项目,SpringCloud微服务架构项目! 一个由商业级项目升级优化而来的微服务架构,采用SpringBoot 2.7 、SpringCloud 等核心技术构建,提供基于React和Vue的两个前端框架用于快速搭建企业级的SaaS多租户微服务平台。 采用前后端分离的模式,前端开源

    2024年02月03日
    浏览(38)
  • 推荐10个Flutter开源项目

    作为跨平台应用开发的领头羊,Flutter从已发布就受到广大开发者的追捧。使用Flutter技术开发的应用不仅体验上无限接近原生应用,在开发效率上也是其他技术无法比拟的。随着其开发者社区的不断壮大,Flutter生态系统已经相当强大,并且众多开源应用程序也相继诞生。这些

    2024年02月15日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包