当前位置:
硬件测评 > 架构师之路:微服务技术选型
架构师之路:微服务技术选型
作为架构师人,需要规划产品技术路线,负责技术选型。技术栈选择主要参考以下标准:
安全稳定,安全漏洞不会频繁暴露。
开源社区活动,加入Apache的组件将优先
一线互联网公司推出产品,大公司背书
该文档易于阅读
本文为您带来微服务架构的后端技术选型。当您需要进行技术选型时,您可以参考它来设计自己的决策树。
开发语言
爪哇
主流编程语言,适合构建大规模后端服务
戈兰
Go语言是Google于2009年发布的第二个开源编程语言。专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以与C或C++代码一样快,更安全,并且支持并行进程。谷歌对 Go 寄予厚望。其设计是为了让软件能够充分利用多核处理器的同时多任务处理能力,解决面向对象编程的麻烦。目前是云计算领域的最佳选择!
开发IDE
智能IDEA
Jetbrains的产品包括智能码助手、J2EE支持、各种版本工具(git、svn、github等)、JUnit、CVS集成等。多语言支持,免费版本仅支持JAVA等少数语言。旗舰版是付费版,也有免费版(功能相比旗舰版有所减少)。
VS代码
VS Code 是一款免费、开源、高性能、跨平台、轻量级的代码编辑器。同时,它在性能、语言支持、开源社区等方面也做得非常出色!
开发技术
微服务框架
Spring Cloud/Spring Cloud 阿里巴巴
Spring Cloud 是一个有序的框架集合。它利用Spring Boot的开发便利性,巧妙地简化了分布式系统基础设施的开发,并提供了全套的微服务解决方案。
RPC框架
RestTemplate&WebClient
Spring RestTemplate是Spring提供的用于访问Rest服务的客户端
远程过程调用
GRPC是Google开源的一个高性能、跨语言的RPC框架,基于HTTP2协议,基于protobuf 3.x的RPC框架。支持多种语言;支持链路复用,长链路可以在集群内使用;经过简单的性能调优,可以满足大部分业务场景的需求。
分布式交易
西塔阿里巴巴重点开源项目,Java开发,高性能,无锁,无代码入侵,AT模式0代码,支持MT模式非事务存储,社区活跃,版本更新快,简单易用!
流量控制、断路器降级
哨兵
阿里巴巴重点开源项目,Java开发,二次开发便捷,社区活跃
API网关
Spring云网关
首选Spring,方便二次开发,支持异步非阻塞
孔
Kong是Mashape开源的一个高可用且易于扩展的API网关项目,基于Nginx_Lua模块编写。它性能优良,插件丰富,基本开箱即用。第二个版本的使用有一定的门槛。
配置中心
纳科斯:
阿里巴巴重点开源项目可作为注册/中央配置中心,技术栈简化,管理界面完善,Java开发,二次开发便捷,社区活跃,持续更新迭代。
阿波罗:
是携程框架部门开发的分布式配置中心。可以集中管理不同应用环境、不同集群的配置。配置修改后可以实时推送到应用端。它还具有标准化的权限、流程治理等特性,适合微服务配置。管理场景。
服务发现
纳科斯:
阿里巴巴重点开源项目,可作为注册/中央配置中心,技术栈简化,管理界面完善,Java开发,二次开发便捷,社区活跃,AP/CP模式,且不断更新迭代。
动物园管理员:
ZooKeeper是一个分布式、开源的分布式应用程序协调服务。它是Google的Chubby的开源实现,也是Hadoop和Hbase的重要组件。其性能可以满足大规模服务发现和配置中心的要求,并且实时生效。高,不适合大规模实时数据同步场景; CP模式。
监视器
普罗米修斯
功能比较全面、CNCF技术栈和活跃社区的开源监控系统
格拉法纳
Grafana 是一个开源指标分析和可视化套件。纯Javascript开发的前端工具,通过访问库(例如InfluxDB)来显示自定义报告、图表等。主要用于监控时间序列数据,与Kibana类似。 Grafana的UI更加灵活,插件丰富,功能强大。界面简洁美观,支持自由定制,社区有丰富的Dashboard支持。
空中漫步
分布式追踪系统,国内链接追踪,丰富的社区文档,Apache顶级项目。
日志
麋鹿分布式服务日志处理,围绕elasticsearch构建的日志生态系统。使用广泛且易于扩展。配合kibana,您可以轻松检索日志,定位线上问题。
数据库中台
分片领域
Apache ShardingSphere定位为关系型数据库中间件,支持数据分片、读写分离、数据多副本、数据加密、影子库压力测试等功能。它拥有丰富的社区文档,已成为Apache顶级项目。
序列化
杰克逊
Spring是首选,稳定、安全。
原始缓冲区
Protocol Buffer(简称Protobuf)是Google开源的一种轻量级、高效的结构化数据存储格式。它可以用于结构化数据序列化,非常适合数据存储或RPC数据交换格式。
不建议使用fastjson
开发工具
构建工具
行家:
Maven是主流的项目构建和管理工具,是Apache下开发的纯Java开源项目。它是一个项目建设和管理工具;它提供了帮助管理构建、文档、报告、依赖项、SCMS、发布和分发的方法。 。它可以轻松地编译代码、执行依赖管理、管理二进制库等。
摇篮
Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建工具。 Gradle 构建脚本是使用特定于领域的语言(例如 Groovy 或 Kotlin)编写的。它可以自动处理包依赖关系,自动处理部署问题,并使条件判断编写直观。
接口请求工具
邮差
Postman是一款功能强大的Chrome插件,用于调试网页和模拟HTTP请求。支持几乎所有类型的HTTP请求,操作简单方便。
容器
码头工人
它是一个开源的应用容器引擎,基于Go语言,遵循Apache2.0协议开源。 Docker 允许开发人员将他们的应用程序和依赖项打包到一个轻量级、可移植的容器中,然后将其发布到任何流行的 Linux 机器上,这些机器也可以虚拟化。使用Docker可以带来以下优势: 1. 更快的交付和部署; 2、高效部署和扩展; 3、资源利用率更高; 4、管理简单
集群管理
库伯内斯Kubernetes 是一个用于容器集群自动化部署、扩展和运行的开源平台。通过Kubernetes,您可以快速有效地响应用户需求;快速、可预测地部署您的应用程序;极快地扩展您的应用程序;无缝连接新的应用功能;节省资源并优化硬件资源的使用。为容器编排和管理提供完整的开源解决方案。生态丰富,易于扩展;功能丰富稳定,大公司认可;容易上手。
图片管理工具
港口
Harbor 是一个开源神器仓库。它是第一个源自中国并成为 CNCF 毕业级开源项目的开源项目。用户可以通过策略和基于角色的访问控制来保护工件(例如容器镜像、Helm 图表等)、扫描镜像并避免安全漏洞。 Harbor扩展了开源项目Docker Distribution,添加了用户需要的功能(例如安全、身份、漏洞扫描和管理)。
操作环境
操作系统:
Linux
Linux是一个免费使用、自由传播的类Unix操作系统。它是一个基于POSIX和UNIX的多用户、多任务、多线程、多CPU操作系统。它可以运行主要的UNIX软件工具、应用程序和网络协议。它支持32位和64位硬件。 Linux继承了Unix以网络为中心的设计思想,是一个性能稳定的多用户网络操作系统。
网络服务器
雄猫<8+>
Tomcat 服务器是一个免费、开源的 Web 应用服务器。它是一种轻量级的应用服务器,常用于中小型系统以及并发访问用户不多的场合。是开发、调试JSP程序的首选。
nginx
轻量级Web服务器/反向代理服务器和电子邮件(IMAP/POP3)代理服务器
NodeJs
服务器端 JavaScript 环境