最新技术选型解决方案列表
最新技術(shù)選型解決方案列表
?
1?? ?概述
這是一份當(dāng)前的技術(shù)選型方案,針對(duì)創(chuàng)業(yè)、中小型公司
2?? ?目標(biāo)
2.1?? ?產(chǎn)品目標(biāo)
2.1.1?? ?SaaS
2.1.1.1?? ?免安裝
2.1.1.2?? ?多租戶
2.1.1.3?? ?流量計(jì)費(fèi)
2.1.2?? ?可配置
2.1.2.1?? ?需開通服務(wù)
2.1.2.2?? ?服務(wù)自動(dòng)組合
2.1.2.3?? ?服務(wù)單獨(dú)結(jié)算
2.1.3?? ?可定制
2.1.3.1?? ?私有云部署
2.1.3.2?? ?按特殊需求開發(fā)
2.1.4?? ?可量化
2.1.4.1?? ?SLA服務(wù)可用性
2.1.4.2?? ?各個(gè)服務(wù)質(zhì)量統(tǒng)計(jì)
2.1.4.3?? ?改進(jìn)建議
2.2?? ?技術(shù)目標(biāo)
2.2.1?? ?LTS平臺(tái)
2.2.1.1?? ?語言穩(wěn)定版本
??? ?Java 11
??? ?Scala 2.12 (2.13)
??? ?PHP 8.*
??? ?Go 1.*
??? ?Python 3.7.*
??? ?ES 2017
2.2.1.2?? ?框架穩(wěn)定版本
??? ?Spring Boot 2.1.* ?(Greenwich)
??? ?Spring Framework 5.*
??? ?Laravel 5.8.*
??? ?Beego 1.10.*
??? ?NodeJS 10.15.*
??? ?Npm 6.7.*
??? ?Vue 2.*
??? ?React 16.8.*
??? ?React Native 0.59
??? ?Electron 4.1.1
2.2.1.3?? ?服務(wù)器和容器穩(wěn)定版本
??? ?Centos 7.*
??? ?Docker CE 18.09 (or 19.03)
??? ?Kubernetes 1.14?
2.2.2?? ?DevOps模式
2.2.2.1?? ?指導(dǎo)原理
??? ?原則
??? ?方法
??? ?實(shí)踐
??? ?工具
2.2.2.2?? ?實(shí)際應(yīng)用微服務(wù)
??? ?微服務(wù)
??? ?CI/CD
??? ?A/B, 灰度
2.2.2.3?? ?敏捷精益開發(fā)
??? ?共識(shí)
??? ?看板/Scrum
??? ?Milestone,Sprint和Backlog文檔
??? ?XP極限編程
??? ?TDD
??? ?Code Review
??? ?Full-Stack 全棧開發(fā)
2.3?? ?運(yùn)維目標(biāo)
2.3.1?? ?企業(yè)級(jí)
2.3.1.1?? ?高可用
2.3.1.2?? ?高性能
2.3.1.3?? ?可擴(kuò)展
2.3.1.4?? ?自動(dòng)備份
2.3.2?? ?自動(dòng)化
2.3.2.1?? ?腳本化
2.3.2.2?? ?界面化
2.3.2.3?? ?規(guī)?;?/p>
2.3.3?? ?可配置
2.3.3.1?? ?友好操作界面
2.3.3.2?? ?彈性伸縮
2.3.3.3?? ?資源限制
2.3.4?? ?安全性
2.3.4.1?? ?權(quán)限控制
2.3.4.2?? ?日志記錄
2.3.4.3?? ?端口,白名單限制
2.3.5?? ?可預(yù)警
2.3.5.1?? ?資源預(yù)警
2.3.5.2?? ?黑客攻擊
2.3.5.3?? ?核心業(yè)務(wù)不可用
2.3.6?? ?自我修復(fù)
2.3.6.1?? ?丟失數(shù)據(jù)修復(fù)
2.3.6.2?? ?內(nèi)部異常流量控制
2.3.6.3?? ?DDoS防護(hù)
2.3.6.4?? ?漏洞修復(fù)
2.3.6.5?? ?木馬、后門修復(fù)
3?? ?技術(shù)選型
3.1?? ?數(shù)據(jù)庫選型
3.1.1?? ?MySQL?
3.1.1.1?? ?Natural key 和 Surrogate key?
Surrogate Key不允許修改。
原則上都設(shè)置一個(gè)Surrogate Key,減少主從、分庫分表、分布式等造成的問題。
3.1.1.2?? ?Foreign key
通過Surrogate Key進(jìn)行外鍵關(guān)聯(lián)。
3.1.1.3?? ?Relation
關(guān)聯(lián)查詢最好兩表以內(nèi),極限三表。更多業(yè)務(wù)需求操作可通過緩存+內(nèi)存,業(yè)務(wù)報(bào)表統(tǒng)計(jì)走數(shù)據(jù)倉庫。
3.1.1.4?? ?Data redundancy
互聯(lián)網(wǎng)產(chǎn)品字段數(shù)據(jù)冗余在所難免,如不能或不方便通過緩存在前臺(tái)拼接的只讀數(shù)據(jù),通過字段冗余實(shí)現(xiàn),減少關(guān)聯(lián)查詢。
3.1.2?? ?MyCAT
3.1.3?? ?Sharding-JDBC
3.1.4?? ?Vitness
3.1.5?? ?Neo4j
3.1.6?? ?MongoDB
?
3.2?? ?發(fā)號(hào)器選型
3.2.1?? ?UUID
優(yōu)點(diǎn)
??? ?本地生成,低延時(shí);
??? ?無需發(fā)布,不需要RPC或者REST接口;
??? ?擴(kuò)展性好,基本沒有性能上限。
缺點(diǎn)
??? ?生成的串過于隨機(jī),無法保證趨勢(shì)遞增,Range查詢比較困難;
??? ?UUID過長(zhǎng)128位,不易存儲(chǔ),往往用字符串表示;
??? ?網(wǎng)絡(luò)傳輸需要傳送更多的字節(jié),并且如果是用在業(yè)務(wù)上(例如讓用戶報(bào)訂單號(hào)進(jìn)行技術(shù)支持),會(huì)不太方便。
3.2.2?? ?Snowflake(推薦)
優(yōu)點(diǎn):
??? ?分布式生成,無單點(diǎn);趨勢(shì)遞增,生成效率快?? ?
缺點(diǎn):
??? ?沒有全局時(shí)鐘的情況下,只能保證趨勢(shì)遞增;
??? ?當(dāng)通過NTP進(jìn)行時(shí)鐘同步時(shí)可能會(huì)出現(xiàn)重復(fù)ID;
??? ?數(shù)據(jù)間隙較大
?
3.2.2.1?? ?Twitter Snowflake
Twitter開源的Scala程序,基于時(shí)間戳,開源分布式發(fā)號(hào)器鼻祖,不維護(hù)了。
3.2.2.2?? ?百度 UidGenerator?
嵌入式
3.2.2.3?? ?Vesta-id-generator?
嵌入式、集中式、REST
3.2.3?? ?Redis + MongoDB?
自研, Redis集群 + Lua腳本 + MongoDB
3.3?? ?緩存選型
3.3.1?? ?CDN? ?靜態(tài)資源
3.3.2?? ?DNS
3.3.3?? ?OSS/S3
3.3.4?? ?SLB
3.3.5?? ?Client – Browser
3.3.6?? ?Web - Nginx
3.3.7?? ?Distribute Object – Redis(內(nèi)存數(shù)據(jù)緩存), SSDB
3.3.8?? ?Monolithic – Ehcache
3.3.9?? ?Application – JVM/PHP Cache
3.3.10?? ?Database Cache
3.3.11?? ?CPU Cache
3.4?? ?RPC選型
3.4.1?? ?Dubbo? 70%的國(guó)內(nèi)公司使用,
3.4.2?? ?gRPC
3.4.3?? ?Thrift
3.5?? ?服務(wù)代理選型
3.5.1?? ?Nginx
3.5.2?? ?Envoy
3.5.3?? ?Traefik
3.6?? ?API網(wǎng)關(guān)選型
3.6.1?? ?Kong
3.6.2?? ?Sentinel
3.7?? ?Service Mesh選型
3.7.1?? ?Zuul
3.7.2?? ?Linkerd
3.7.3?? ?Istio
3.8?? ?消息中間件選型
3.8.1?? ?Kafka? 大數(shù)據(jù)日志處理,10萬+
3.8.2?? ?RabbitMQ? ? 5萬+
3.8.3?? ?RocketMQ? ?分布式10萬+
3.9?? ?協(xié)調(diào)/服務(wù)發(fā)現(xiàn)選型
3.9.1?? ?Eureka
3.9.2?? ?Consul
3.9.3?? ?Zookeeper? ?強(qiáng)一致性
3.9.4?? ?Etcd
3.10?? ?日志選型
3.10.1?? ?ELK
3.10.2?? ?Fluentd
3.10.3?? ?Grafana Loki
3.10.4?? ?Scalyr
3.11?? ?追蹤調(diào)用選型
3.11.1?? ?OpenTracing
3.11.2?? ?Zipkin
3.11.3?? ?Jaeger
3.12?? ?混沌選型
3.12.1?? ?Chaos Toolkit?
3.12.2?? ?Chaos Kube
3.13?? ?分布式調(diào)度選型
3.13.1?? ?Quartz?
3.13.2?? ?XXL-Job
3.13.3?? ?Helix
3.13.4?? ?DKron
3.13.5?? ?Bistro
3.13.6?? ?Cronicle
3.14?? ?DevOps選型
3.14.1.1?? ?Dev - Virtual Box, Vagrant
3.14.2?? ?Issue, Error Tracking - Sentry
3.14.3?? ?CI – Gitlab, Jenkins
3.14.4?? ?CD – Docker, Kubernetes
3.14.5?? ?Analytics– Grafana, Zabbix, Prometheus
3.15?? ?規(guī)則引擎選型
3.15.1?? ?Drools
3.15.2?? ?jBPM
3.15.3?? ?OptaPlanner
3.16?? ?秘鑰管理選型
3.16.1?? ?Vault
3.16.2?? ?Keycloak
3.16.3?? ?Gravitational
3.17?? ?大數(shù)據(jù)選型
3.17.1?? ?Storage – HDFS, Rook, OpenIO, Ceph
3.17.2?? ?Data Integration – Kettle, Alooma, MuleSoft, Talend, Panoply
3.17.3?? ?實(shí)時(shí)計(jì)算 – Spark Streaming,Flink
3.18?? ?AI選型
3.18.1?? ?Deep Learning, Machine Learning – 深度/機(jī)器學(xué)習(xí)
3.18.2?? ?NLP Platforms – 智能助理/客服
3.18.3?? ?Predictive APIs – 智能預(yù)測(cè)
3.18.4?? ?Image Recognition – 圖像識(shí)別
3.18.5?? ?Speech Recognition – 語音識(shí)別
3.19?? ?后臺(tái)選型
3.19.1?? ?Spring Boot/Cloud
3.19.2?? ?Laravel
3.20?? ?中臺(tái)選型
3.20.1?? ?Flask
3.20.2?? ?Beego, Echo
3.20.3?? ?Adonisjs, Meteorjs
3.21?? ?前臺(tái)選型
3.21.1?? ?Vue, React
3.21.2?? ?Electron
3.21.3?? ?React-native
3.22?? ?測(cè)試選型
3.22.1?? ?Java – JUnit, Mockito
3.22.2?? ?PHP – PhpUnit, Mockery
3.22.3?? ?JavaScript – Jestjs, Chai
3.22.4?? ?Browser – Selenium, Puppeteer
3.22.5?? ?Performance – JMeter, Locust, Tricentis Flood
3.23?? ?運(yùn)維選型
3.23.1?? ?Automation – ?Ansible, Puppy, SalkStack
3.23.2?? ?Configuration – Apollo
3.23.3?? ?Planning – Terraform
3.23.4?? ?Self-Service – RunDeck
3.24?? ?項(xiàng)目管理選型
3.24.1?? ?JIRA
3.24.2?? ?Confluence
3.24.3?? ?Swagger
3.24.4?? ?apiDoc
3.24.5?? ?Postman
3.24.6?? ?釘釘
3.24.7?? ?企業(yè)微信
4?? ?開發(fā)平臺(tái)及工具
4.1?? ?基礎(chǔ)環(huán)境
4.1.1?? ?HomeBrew – git, tree, aria2
4.1.2?? ?Virtual Box
4.1.3?? ?Vagrant
4.1.4?? ?Docker - Desktop Version, Docker Plugin, Dry
4.1.5?? ?Kubernates - Minikube
4.1.6?? ?MySQL Client - DataGrip, Navicat
4.2?? ?后臺(tái)開發(fā)
4.2.1?? ?Java – JDK, jenv, IntelliJ IDEA, maven, gradle, sbt
4.2.2?? ?PHP – PhpStorm
4.3?? ?中臺(tái)開發(fā)
4.3.1?? ?Go – Go SDK, GoLand
4.3.2?? ?Python – Pip, PyCharm
4.3.3?? ?NodeJS – Npm, WebStorm
4.4?? ?前臺(tái)開發(fā)
4.4.1?? ?JavaScript – Virtual Studio Code, ES6, TypeScript, LESS, SASS
4.4.2?? ?App – React Native
4.4.3?? ?Desktop – Electron
4.4.4?? ?Compatible – Babel
4.4.5?? ?Package – Bower, Grunt, Webpack
4.4.6?? ?Code Style – ESLint,
4.4.7?? ?SPA – React, Vue, Redux, Vuex
4.5?? ?運(yùn)維開發(fā)
4.5.1?? ?Remote - SecureCRT
4.5.2?? ?DevOps – Shell, Python
4.5.3?? ?Sync – RSync
?
總結(jié)
以上是生活随笔為你收集整理的最新技术选型解决方案列表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黄山风景区看日出几点起床?
- 下一篇: 红莲现在值多少