最新技术选型解决方案列表
最新技術選型解決方案列表
?
1?? ?概述
這是一份當前的技術選型方案,針對創業、中小型公司
2?? ?目標
2.1?? ?產品目標
2.1.1?? ?SaaS
2.1.1.1?? ?免安裝
2.1.1.2?? ?多租戶
2.1.1.3?? ?流量計費
2.1.2?? ?可配置
2.1.2.1?? ?需開通服務
2.1.2.2?? ?服務自動組合
2.1.2.3?? ?服務單獨結算
2.1.3?? ?可定制
2.1.3.1?? ?私有云部署
2.1.3.2?? ?按特殊需求開發
2.1.4?? ?可量化
2.1.4.1?? ?SLA服務可用性
2.1.4.2?? ?各個服務質量統計
2.1.4.3?? ?改進建議
2.2?? ?技術目標
2.2.1?? ?LTS平臺
2.2.1.1?? ?語言穩定版本
??? ?Java 11
??? ?Scala 2.12 (2.13)
??? ?PHP 8.*
??? ?Go 1.*
??? ?Python 3.7.*
??? ?ES 2017
2.2.1.2?? ?框架穩定版本
??? ?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?? ?服務器和容器穩定版本
??? ?Centos 7.*
??? ?Docker CE 18.09 (or 19.03)
??? ?Kubernetes 1.14?
2.2.2?? ?DevOps模式
2.2.2.1?? ?指導原理
??? ?原則
??? ?方法
??? ?實踐
??? ?工具
2.2.2.2?? ?實際應用微服務
??? ?微服務
??? ?CI/CD
??? ?A/B, 灰度
2.2.2.3?? ?敏捷精益開發
??? ?共識
??? ?看板/Scrum
??? ?Milestone,Sprint和Backlog文檔
??? ?XP極限編程
??? ?TDD
??? ?Code Review
??? ?Full-Stack 全棧開發
2.3?? ?運維目標
2.3.1?? ?企業級
2.3.1.1?? ?高可用
2.3.1.2?? ?高性能
2.3.1.3?? ?可擴展
2.3.1.4?? ?自動備份
2.3.2?? ?自動化
2.3.2.1?? ?腳本化
2.3.2.2?? ?界面化
2.3.2.3?? ?規模化
2.3.3?? ?可配置
2.3.3.1?? ?友好操作界面
2.3.3.2?? ?彈性伸縮
2.3.3.3?? ?資源限制
2.3.4?? ?安全性
2.3.4.1?? ?權限控制
2.3.4.2?? ?日志記錄
2.3.4.3?? ?端口,白名單限制
2.3.5?? ?可預警
2.3.5.1?? ?資源預警
2.3.5.2?? ?黑客攻擊
2.3.5.3?? ?核心業務不可用
2.3.6?? ?自我修復
2.3.6.1?? ?丟失數據修復
2.3.6.2?? ?內部異常流量控制
2.3.6.3?? ?DDoS防護
2.3.6.4?? ?漏洞修復
2.3.6.5?? ?木馬、后門修復
3?? ?技術選型
3.1?? ?數據庫選型
3.1.1?? ?MySQL?
3.1.1.1?? ?Natural key 和 Surrogate key?
Surrogate Key不允許修改。
原則上都設置一個Surrogate Key,減少主從、分庫分表、分布式等造成的問題。
3.1.1.2?? ?Foreign key
通過Surrogate Key進行外鍵關聯。
3.1.1.3?? ?Relation
關聯查詢最好兩表以內,極限三表。更多業務需求操作可通過緩存+內存,業務報表統計走數據倉庫。
3.1.1.4?? ?Data redundancy
互聯網產品字段數據冗余在所難免,如不能或不方便通過緩存在前臺拼接的只讀數據,通過字段冗余實現,減少關聯查詢。
3.1.2?? ?MyCAT
3.1.3?? ?Sharding-JDBC
3.1.4?? ?Vitness
3.1.5?? ?Neo4j
3.1.6?? ?MongoDB
?
3.2?? ?發號器選型
3.2.1?? ?UUID
優點
??? ?本地生成,低延時;
??? ?無需發布,不需要RPC或者REST接口;
??? ?擴展性好,基本沒有性能上限。
缺點
??? ?生成的串過于隨機,無法保證趨勢遞增,Range查詢比較困難;
??? ?UUID過長128位,不易存儲,往往用字符串表示;
??? ?網絡傳輸需要傳送更多的字節,并且如果是用在業務上(例如讓用戶報訂單號進行技術支持),會不太方便。
3.2.2?? ?Snowflake(推薦)
優點:
??? ?分布式生成,無單點;趨勢遞增,生成效率快?? ?
缺點:
??? ?沒有全局時鐘的情況下,只能保證趨勢遞增;
??? ?當通過NTP進行時鐘同步時可能會出現重復ID;
??? ?數據間隙較大
?
3.2.2.1?? ?Twitter Snowflake
Twitter開源的Scala程序,基于時間戳,開源分布式發號器鼻祖,不維護了。
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? ?靜態資源
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(內存數據緩存), 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%的國內公司使用,
3.4.2?? ?gRPC
3.4.3?? ?Thrift
3.5?? ?服務代理選型
3.5.1?? ?Nginx
3.5.2?? ?Envoy
3.5.3?? ?Traefik
3.6?? ?API網關選型
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? 大數據日志處理,10萬+
3.8.2?? ?RabbitMQ? ? 5萬+
3.8.3?? ?RocketMQ? ?分布式10萬+
3.9?? ?協調/服務發現選型
3.9.1?? ?Eureka
3.9.2?? ?Consul
3.9.3?? ?Zookeeper? ?強一致性
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?? ?追蹤調用選型
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?? ?分布式調度選型
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?? ?規則引擎選型
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?? ?大數據選型
3.17.1?? ?Storage – HDFS, Rook, OpenIO, Ceph
3.17.2?? ?Data Integration – Kettle, Alooma, MuleSoft, Talend, Panoply
3.17.3?? ?實時計算 – Spark Streaming,Flink
3.18?? ?AI選型
3.18.1?? ?Deep Learning, Machine Learning – 深度/機器學習
3.18.2?? ?NLP Platforms – 智能助理/客服
3.18.3?? ?Predictive APIs – 智能預測
3.18.4?? ?Image Recognition – 圖像識別
3.18.5?? ?Speech Recognition – 語音識別
3.19?? ?后臺選型
3.19.1?? ?Spring Boot/Cloud
3.19.2?? ?Laravel
3.20?? ?中臺選型
3.20.1?? ?Flask
3.20.2?? ?Beego, Echo
3.20.3?? ?Adonisjs, Meteorjs
3.21?? ?前臺選型
3.21.1?? ?Vue, React
3.21.2?? ?Electron
3.21.3?? ?React-native
3.22?? ?測試選型
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?? ?運維選型
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?? ?項目管理選型
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?? ?企業微信
4?? ?開發平臺及工具
4.1?? ?基礎環境
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?? ?后臺開發
4.2.1?? ?Java – JDK, jenv, IntelliJ IDEA, maven, gradle, sbt
4.2.2?? ?PHP – PhpStorm
4.3?? ?中臺開發
4.3.1?? ?Go – Go SDK, GoLand
4.3.2?? ?Python – Pip, PyCharm
4.3.3?? ?NodeJS – Npm, WebStorm
4.4?? ?前臺開發
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?? ?運維開發
4.5.1?? ?Remote - SecureCRT
4.5.2?? ?DevOps – Shell, Python
4.5.3?? ?Sync – RSync
?
總結
以上是生活随笔為你收集整理的最新技术选型解决方案列表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黄山风景区看日出几点起床?
- 下一篇: Java线程怎样映射到操作系统线程