前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技术选型-语言、框架和中间件

技术选型-语言、框架和中间件

原创
作者头像
二木
修改2022-05-02 09:36:42
1.6K0
修改2022-05-02 09:36:42
举报
文章被收录于专栏:上云实践案例上云实践案例

程序语言和框架

前端语言和框架没啥特别要交代的,前端团队自己拿的主意 --- vuejs。

golang框架

我们公司内部后端团队主要语言是golang,web框架选项比较纠结,一个是开源社区的web框架 gin,在上云前用的框架, 另外就是一个选择就是公司内部的远程调用开发框架trpc。gin 框架的功能和有点毋需赘述,可自行上github了解。我们最终选择了trpc-go为trpc框架的golang版本。

为何选择trpc框架?

为什么我们选择内部自研的RPC框架, 而不是开源成熟框? 答案非常简单因为该框架是公司老板主推的,公司为了形成统一的微服务框架而自研了该框架,该框架有如下优点:

  1. 多语言:框架覆盖主流编程语言,方便不同技术团队协作
  2. 架构开放:支持与存量系统对接,包括协议与服务治理
  3. 性能与成熟度高

java框架

该系统由多个研发团队合作开发,除了golang语言之外,另外2个团队的后端语言是java,使用的框架是springcloud。

腾讯微服务平台

语言框架选型之后,我们要考虑运行方式以减少开发和运维成本,因此需要期望支持:

  1. 服务无状态运行
  2. 配置管理(不同环境配置、不同版本配置)
  3. 能提供日志服务
  4. 服务监控报警
  5. 支持配置回滚、支持应用回滚
  6. 弹性伸缩

使用容器的方式可以分离应用程序和运行环境,以减少开发/测试/生产环境切换成本。那选择哪个容器管理平台呢?

腾讯云容器服务(Tencent Kubernetes Engine,TKE),基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,基本上解决了上述几个问题,但如果我们选型了腾讯服务平台(Tencent Service Framework,以下简称 TSF),TSF是底层支持运行的是TKE或者是虚拟机,做了更多的能力封装,集成springcloud、service mash,支持更多的服务管理能力, 如下图:

image.png
image.png

准入/API网关

考虑到身份准入和不同团队之间的API服务发布/调用,由于tsf对trpc-go支持不够友好,springcloud 与trpc-go协议并不兼容,因此tsf无法解决不同语言之间的服务管理,所以我们选择部署内部网关服务,来解决身份准入和API服务管理。

存储选型

关系型数据库

业务重要数据存储,选择了基本兼容mysql的分布式数据库 TDSQL MySQL版, 是部署在腾讯云上的一种支持自动水平拆分、Shared Nothing 架构的分布式数据库,架构图如下:

image.png
image.png

nosql

redis 缓存

高可用版本,一主一备份,架构图如下:

image.png
image.png

mongodb

网关业务数据存储

image.png
image.png

elasticsearch

网关日志存储,接口监控数据源

image.png
image.png

对象存储COS

一些文件,图片存储,大对象的存储,前端资源的存储可开启cos的DNS加速。

消息队列-TDMQ

用于服务间解偶

DevOps工具-coding

coding即是代码托管平台,也是持续集成工具,使用该工具能极大减少运维维护成本,支持快速敏捷迭代。

web应用防火墙-WAF

最后为了系统安全,可以考虑入口加防火墙,使用 WAF 均可有效防御以及预防,保障企业网站的系统以及业务安全。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 程序语言和框架
    • golang框架
      • 为何选择trpc框架?
    • java框架
    • 腾讯微服务平台
    • 准入/API网关
    • 存储选型
      • 关系型数据库
        • nosql
          • redis 缓存
          • mongodb
          • elasticsearch
        • 对象存储COS
          • 消息队列-TDMQ
          • DevOps工具-coding
          • web应用防火墙-WAF
          相关产品与服务
          CODING DevOps
          CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档