当前位置: 首页 > 科技观察

架构师之路:微服务技术选型

时间:2023-03-18 23:32:15 科技观察

作为架构师,需要规划产品技术路线,负责技术选型。技术栈的选择主要参考以下标准:安全稳定,不能频繁暴露安全漏洞开源社区的活跃度,加入Apache的组件优先考虑一线互联网公司的落地产品,大公司为他们背书文档可读性好为你带来微服务架构的后端技术选型。当你需要做技术选型的时候,可以参考他设计自己的决策树。开发语言JAVA主流编程语言,适用于构建大型后台服务GolangGo语言是Google于2009年发布的第二个开源编程语言,专门针对多处理器系统应用程序的编程进行了优化。用Go编译的程序可以匹敌C或C++代码的速度,并且更安全,支持并行进程。Google对Go寄予厚望。它的设计是为了让软件充分利用多核处理器同步多任务的优势,解决面向对象编程的麻烦。目前作为云计算领域的最佳选择!开发IDEIntelliJIDEAjetbrains的产品,智能代码助手,J2EE支持,各种版本工具(git,svn,github等),JUnit,CVS集成等。多语言支持,免费版只支持少数几种语言作为Java。旗舰版是付费版,也有免费版(相比旗舰版功能有所缩减)。VSCodeVSCode是一个免费、开源、高性能、跨平台、轻量级的代码编辑器。同时在性能、语言支持、开源社区等方面也做的不错!开发技术微服务框架SpringCloud/SpringCloudalibabaSpringCloud是一系列框架的有序集合。它利用SpringBoot的开发便利性,巧妙地简化了分布式系统基础设施的开发,提供了一套完整的微服务解决方案。RPC框架RestTemplate&WebClientSpringRestTemplate是Spring提供的用于访问Rest服务的客户端。gRPCGRPC是Google开源的一个高性能、跨语言的RPC框架,基于HTTP2协议,基于protobuf3.x的rpc框架。支持多种语言;支持链路复用,集群内可以使用长链路;经过简单的性能调优后,可以满足大部分业务场景的需求。分布式事务Seata阿里巴巴重点开源项目,Java开发,高性能,无锁,无代码入侵AT模式0代码,支持MT模式非事务存储,社区活跃,版本更新快,简单易用!流量控制,熔断降级阿里巴巴SentinelKey开源项目,Java开发,方便二次开发,活跃社区API网关SpringCloudGatewaySpring首选,方便二次开发,支持异步非阻塞KongKong是一个基于Nginx_Lua模块编写的高可用,Mashape开源的APIGateway项目,易于扩展。性能极佳,插件丰富,基本开箱即用,二版使用有一定门槛。配置中心Nacos:阿里巴巴重点开源项目,可同时作为注册/中央配置中心,简化技术栈,拥有完善的管理接口,Java开发,方便二次开发,社区活跃,持续不断更新和迭代。Apollo:是携程框架部门开发的分布式配置中心。它可以集中管理不同环境和不同应用程序集群的配置。配置修改后,可实时推送至应用端,具有权限标准化、流程化管理等特点。适用于微服务配置管理场景。ServiceDiscoveryNacos:阿里巴巴重点开源项目,可同时作为注册/中央配置中心,简化技术栈,拥有完善的管理接口,Java开发,二次开发便捷,社区活跃,AP/CP模式,并且还在更新迭代中。Zookeeper:ZooKeeper是一个分布式的、开源的分布式应用协调服务,是Google的Chubby的开源实现,是Hadoop和Hbase的重要组件;其性能可以满足大规模服务发现和配置中心的需求,并且会产生实时性高,不适合大规模实时数据同步的场景;CP模式。MonitoringPrometheus是一个功能全面的开源监控系统,CNCF技术栈,社区活跃GrafanaGrafana是一个开源的测量分析和可视化套件。纯Javascript开发的前端工具,通过访问库(如InfluxDB)展示自定义报表、展示图表等。大部分用于时序数据的监控,类似Kibana。Grafana的UI更加灵活,插件丰富,功能强大。界面简洁美观,支持自由定制,社区有丰富的Dashboard支持。SkyWalking分布式追踪系统,国内链接追踪,丰富的社区文档,Apache顶级项目。LogELK分布式服务日志处理,一个围绕elasticsearch构建的日志生态系统。应用广泛,易于扩展。有了kibana,可以很方便的调取日志,定位线上问题。数据库中台ShardingSphereApacheShardingSphere定位为关系型数据库中间件,支持数据分片、读写分离、数据多副本、数据加密、影子数据库压测等功能,社区文档丰富,拥有成为顶级Apache项目。JacksonSpring首选序列化,稳定安全。protobufProtocolBuffer(简称Protobuf)是Google开源的一种可移植、高效的结构化数据存储格式。可用于结构化数据的序列化,非常适合数据存储或RPC数据交换格式。不推荐使用fastjson开发工具。构建工具Maven:主流的项目构建和管理工具。Maven是Apache下用纯Java开发的一个开源项目。是项目建设和管理的工具;它提供帮助来管理构建、文档和报告、依赖项、SCMS、发布、分发方法。您可以轻松编译代码、管理依赖项、管理二进制库等。GradleGradle是一个基于ApacheAnt和ApacheMaven概念的项目自动化构建工具。Gradle构建脚本使用Groovy或Kotlin领域特定语言编写,可自动处理包依赖,自动处理部署问题,条件判断编写直观。接口请求工具postmanpostman是一个功能强大的Chrome插件,用于调试和模拟发送HTTP请求。支持几乎所有类型的HTTP请求,操作简单方便。ContainerDocker是一个开源的应用容器引擎,基于Go语言,按照Apache2.0协议开源。Docker允许开发人员将他们的应用程序和依赖项打包到一个轻量级、可移植的容器中,然后将其分发到任何流行的Linux机器上,并且还可以进行虚拟化。使用Docker可以带来以下优势:1.更快的交付和部署;2、高效的部署和扩展;3、更高的资源利用率;4.简单的管理集群管理KubernetesKubernetes是一个容器集群自动化部署、扩展、运维的开源平台。通过Kubernetes,可以快速有效地响应用户需求;快速且可预测地部署您的应用程序;极快地扩展您的应用程序;无缝连接新的应用功能;节省资源,优化硬件资源的使用。为容器编排管理提供完整的开源解决方案。生态丰富,易于扩展;功能丰富稳定,大公司背书;便于使用。图像管理工具HarborHarbor是一个开源的神器仓库,是第一个起源于中国并成为CNCF研究生级别项目的开源项目。用户可以通过策略和基于角色的访问控制保护工件(如容器镜像、HelmCharts等),扫描镜像并避免被安全漏洞危害。Harbor扩展了开源项目DockerDistribution,添加了用户所需的功能(例如安全性、身份、漏洞扫描和管理)。运行环境操作系统:LinuxLinux是一套免费使用、自由传播的类Unix操作系统。它是一个基于POSIX和UNIX的多用户、多任务、多线程和多CPU操作系统。它可以运行主要的UNIX实用软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为中心的设计思想,是一个性能稳定的多用户网络操作系统。Web服务器Tomcat<8+>Tomcat服务器是一个免费开源的Web应用服务器,是一个轻量级的应用服务器。广泛应用于中小型系统和并发访问用户不多的场合。程序的首选。Nginx轻量级web服务器/反向代理服务器和邮件(IMAP/POP3)代理服务器NodeJs服务器端JavaScript环境