前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >搞定基于go-zero微服务架构的博客系统(0)

搞定基于go-zero微服务架构的博客系统(0)

原创
作者头像
海风极客
发布2023-12-10 22:10:59
2581
发布2023-12-10 22:10:59
举报
文章被收录于专栏:扯编程的淡扯编程的淡

近年来,Go语言以其简洁、高效和强大的并发能力赢得了广大开发者的喜爱。与此同时,微服务架构也逐渐成为企业应用的首选,它为我们带来了更好的扩展性、灵活性和可维护性。那么,当Go遇上微服务,会产生怎样的火花呢?

在这个专栏中,我们将深入Go语言的每一个角落,探索微服务架构的每一个细节。我们不仅会为大家分享Go的基础知识、进阶技巧,还会结合真实的项目案例,为大家展示如何运用Go构建微服务。

专栏的核心内容将围绕一个博客系统进行展开。我们将从需求分析开始,设计数据库结构,编写API接口,再到部署和测试,每一个环节都会详细讲解。通过这个项目,大家不仅可以掌握Go语言的实战技能,还可以深入理解微服务架构的精髓。

无论你是Go语言的新手,还是有一定经验的开发者,都可以从这个专栏中获得收获。我们会为大家准备丰富的代码示例、实用的工具和资料,帮助大家更好地学习和实践。

1 架构图

本次博客系统将拆分为三个服务和一个组件:

  • geek-blog-web:前端服务。
  • geek-blog-api:API服务,提供RESTful API接口,主要负责暴露系统的HTTP接口供前端使用和Auth认证等功能。可以包含一些简单的业务逻辑,如输入参数的校验、会话管理等。与核心业务层进行通信,转发请求并获取响应数据。
  • geek-blog-core:核心服务,博客系统的核心业务和存储服务。
  • geek-blog-common:公共组件,主要包含gRPC API和一些组件库。

通过将博客系统拆分为多个服务,可以实现更好的扩展性、可靠性和性能。每个服务可以独立扩展和部署,使用不同的技术和存储方案,以满足特定的需求。同时,通过API接口进行服务间的通信,可以实现服务的解耦和灵活组合。

2 基本业务

  1. 文章业务:负责博客文章的创建、编辑、删除、发布以及列表和详情展示等功能。
  2. 搜索业务:负责博客文章的搜索功能。使用专门的搜索引擎如Elasticsearch来实现全文搜索,并提供搜索相关的API接口。
  3. 认证授权业务:使用GitHub OAuth接入。
  4. 音乐/视频分享业务:可分享作者推荐的视频和音乐等三方媒体内容。
  5. 日志业务:收集系统日志。
  6. 管理后台业务:管理员可进行对博客系统内容的管理,以及对运营数据的查看。

3 技术栈介绍

3.1 go-zero

Doc.:https://go-zero.dev/

go-zero是一个高性能、易用且开源的微服务框架,它为开发者提供了一套完整的解决方案,包括RPC框架、HTTP框架、分布式事务、数据访问层等。

go-zero的主要特点包括高性能、低延迟、易用、弹性设计、高扩展性等。它提供了极简的API定义和生成工具goctl,可以根据定义的api文件一键生成Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript代码,并可直接运行。此外,Go-zero还具有出色的分布式事务管理和数据访问层等功能。

主要适用场景:Go-zero适用于各种需要构建微服务的应用场景,例如电商、社交、金融等。它可以帮助开发者快速构建出高性能、可扩展的微服务应用,提高开发效率和产品质量。

3.2 Docker&Kubernetes

Docker:https://www.docker.com/

Kubernetes:https://kubernetes.io/

Docker和Kubernetes都是现今最受欢迎的开源技术之一。

Docker是一种开源的应用容器引擎,它是一种资源虚拟化技术,可以让开发者将他们的应用以及依赖包打包到一个可移植的容器中,然后发布到任何流行的Linux机器上。Docker让开发、测试和部署应用程序变得简单,因为它可以帮助开发者消除环境不一致的问题,减少开发周期,并使得跨平台开发变得更加容易。

Kubernetes是Google内部一个叫Borg的容器集群管理系统衍生出来的,已经在Google大规模生产运行十年之久。Kubernetes主要用于自动化部署、扩展和管理容器应用,提供了资源调度、部署管理、服务发现、扩容缩容、监控等一整套功能。Kubernetes的目标旨在消除编排物理/虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。

总的来说,Docker是一个用于打包、分发和运行应用程序的开放平台,而Kubernetes是一个用于自动化容器编排的系统。两者结合使用,可以使得应用程序的开发、部署和维护更加高效和可靠。

4 后续规划

功能上

  • 接入监控
  • 邮箱验证码登录
  • 增加文章评论

服务拆分

  • 基础文章服务
  • 文件上传下载服务
  • 搜索服务

技术上

  • Docker打包
  • Kubernetes部署

商业化

  • VIP可见等等
  • 广告插入

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 架构图
  • 2 基本业务
  • 3 技术栈介绍
    • 3.1 go-zero
      • 3.2 Docker&Kubernetes
      • 4 后续规划
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档