一名架构师,他要如何做微服务技术选型?

新闻
本篇为大家带来微服务架构的后端技术选型,当你需要进行技术选型时,可以参照他来设计自己的决策树。

[[420622]]

 作为一名架构师,需要规划产品技术路线,负责技术选型。而技术栈选型主要参考以下几个标准:

  • 安全稳定,不能经常被爆出安全漏洞

  • 开源社区活跃度,加入Apache的组件优先考虑

  • 一线互联网公司落地产品,有大公司为其背书

  • 文档阅读性好

本篇为大家带来微服务架构的后端技术选型,当你需要进行技术选型时,可以参照他来设计自己的决策树。

开发语言

JAVA

主流编程语言,适合构建大型后台服务

Golang

Go语言是谷歌2009发布的第二款开源编程语言。专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。Google对Go寄予厚望。其设计是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦。目前作为云计算领域的不二之选!

开发IDE

IntelliJ IDEA

jetbrains公司旗下产品,智能代码助手、J2EE支持、各类版本工具(git、svn、github等)、JUnit、CVS整合等。多语言支持,免费版只支持JAVA等少数语言。旗舰版为收费版本,同时提供免费版(功能上较旗舰版有减少)。

VS Code

VS Code是一款免费的、开源的、高性能的、跨平台的、轻量级的代码编辑器,同时,在性能,语言支持、开源社区方面也做的很不错!

开发技术

微服务框架

Spring Cloud / Spring Cloud alibaba

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,提供了全套微服务解决方案。

RPC框架

RestTemplate&WebClient

Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端

gRPC

GRPC是google开源的一个高性能、跨语言的RPC框架,基于HTTP2协议,基于protobuf 3.x的一款rpc框架。多种语言支持;支持链接复用,集群内可采用长链接;性能简单调优后,可满足多数业务场景需求。

Dubbo

阿里巴巴 开源项目, 提供了六大核心能力:面向接口代理的高性能RPC调用,智能容错和负载均衡,服务自动注册和发现,高度可扩展能力,运行期流量调度,可视化的服务治理与运维。

分布式事务

Seata

阿里巴巴重点开源项目、Java开发、性能高、无锁、代码无侵入AT模式0代码、支持MT模式非事务型存储、社区活跃,版本更新快,使用简单!

流量控制、熔断降级

Sentinel

阿里巴巴重点开源项目、Java开发、二次开发方便、社区活跃

API网关

Spring Cloud Gateway

Spring首选、方便二次开发、支持异步非阻塞

Kong

Kong是一款基于Nginx_Lua模块写的高可用,易扩展由Mashape公司开源的API Gateway项目。性能优异,插件丰富基本开箱即用,二开有一定的使用门槛。

配置中心

Nacos

阿里巴巴重点开源项目、可同时作为注册/中心配置中心,简化技术栈、有完善管理界面、Java开发、二次开发方便、社区活跃、还在不断更新迭代。

Apollo

是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

服务发现

Nacos

阿里巴巴重点开源项目、可同时作为注册/中心配置中心,简化技术栈、有完善管理界面、Java开发、二次开发方便、社区活跃、AP/CP模式,还在不断更新迭代。

Zookeeper

ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件;性能可以满足较大规模的服务发现和配置中心,生效实时性高,不适合大规模实时数据同步场景;CP模式。

监控

Prometheus

功能较为全面的开源监控系统,CNCF技术栈、社区活跃

Grafana

Grafana是一个开源的度量分析与可视化套件。纯 Javascript 开发的前端工具,通过访问库(如InfluxDB),展示自定义报表、显示图表等。大多使用在时序数据的监控方面,如同Kibana类似。Grafana的UI更加灵活,有丰富的插件,功能强大。界面简洁美观,支持自由定制,社区有丰富的Dashboard支持。

SkyWalking

分布式追踪系统,国产链路跟踪、社区文档丰富,Apache顶级项目。

日志

ELK

分布式服务日志处理,围绕elasticsearch构建的日志生态系统。使用广泛,扩展方便。配合kibana可以很方便对日志进行检索,定位线上问题。

数据库中间

ShardingSphere

Apache ShardingSphere 定位为关系型数据库中间件,支持数据分片、读写分离、多数据副本、数据加密、影子库压测等功能;社区文档丰富,目前已经成为Apache顶级项目。

序列化

Jackson

Spring首选、稳定 安全 。

protobuf

Protocol Buffer( 简称Protobuf) 是google开源的一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或RPC 数据交换格式。

不建议使用fastjson

开发工具

构建工具

Maven

主流的项目构建和管理工具,Maven是 Apache 下的一个纯 Java 开发的开源项目,是一个项目构建和管理的工具;它提供了帮助管理 构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。

Gradle

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。Gradle 构建脚本使用的是 Groovy 或 Kotlin 的特定领域语言来编写,它可以自动处理包相依关系,自动处理布署问题,条件判断写法直觉。

接口请求工具

postman

postman是一款功能强大的网页调试和模拟发送HTTP请求的Chrome插件,支持几乎所有类型的HTTP请求,操作简单且方便。

容器

Docker

是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。使用Docker可以带来以下几个优势:1. 更快速的交付和部署;2. 高效的部署和扩容;3. 更高的资源利用率;4. 简单的管理

集群管理

Kubernetes

Kubernetes一个用于容器集群的自动化部署、扩容以及运维的开源平台。通过Kubernetes,你可以快速有效地响应用户需求;快速而有预期地部署你的应用;极速地扩展你的应用;无缝对接新应用功能;节省资源,优化硬件资源的使用。为容器编排管理提供了完整的开源方案。生态丰富,易扩展;功能丰富稳定,大公司背书;易上手。

镜像管理工具

Harbor

Harbor是个开源制品(artifact)仓库,是首个原创于中国、并且成为 CNCF 毕业级的开源项目。用户可通过策略和基于角色的访问控制来保护制品(如容器镜像、Helm Chart等),扫描镜像并避免受安全漏洞的危害。Harbor扩展了开源项目 Docker Distribution,添加了用户所需的功能(例如安全性,身份,漏洞扫描和管理)。

运行环境

操作系统:

Linux<CentOS 7+>

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Web服务器

Tomcat<8+>

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

Nginx

轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器

NodeJs

服务端JavaScript环境

好了,今天的文章就到这里了,希望本文可以给各位架构师们在技术选型时提供一点小帮助。

 

责任编辑:张燕妮 来源: JAVA日知录
相关推荐

2020-11-25 09:56:48

架构运维技术

2012-06-08 10:12:08

架构师

2017-11-02 08:54:13

数据存储架构

2009-04-01 09:23:29

IT工程师职场

2022-06-21 09:00:00

云架构师技能职业生涯

2015-02-06 11:08:19

2018-10-31 09:32:19

云架构师云计算架构

2023-11-03 09:05:53

2021-02-24 14:01:13

微服务开发框架

2021-01-04 09:35:55

微服务架构配置中心

2021-05-25 09:51:42

架构运维技术

2020-10-28 10:49:55

2013-08-22 10:23:15

程序员开发

2017-12-12 16:17:55

微服务系统运维

2019-02-18 09:12:36

数据科学家数据科学数据

2015-07-15 21:22:57

软件架构师架构师

2020-09-15 09:55:13

架构师架构选型

2023-08-20 12:21:18

软件开发架构设计

2023-10-28 09:08:19

微服务saas私有化

2020-07-22 07:00:00

微服务架构
点赞
收藏

51CTO技术栈公众号