当前位置: 首页 > 编程日记 > 正文

最新技术选型解决方案列表

最新技术选型解决方案列表

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

相关文章:

合工大的计算机专业好不好,合肥工业大学计算机好,还是西电的好?差距有多大?...

合肥工业大学计算机好,还是西电的好?差距有多大?这两个大学都是教育部直属的工科院校,但是性质完全不一样,到底谁更厉害,结论是西电的计算机要比合肥工业大学强。首先因为西电本身就是比哈工大厉害的大学,学科评估方…

DataWorks V2使用PyUdf

在DataWorks上新建一个Python资源,命名为 test_udf.py 编辑pyudf的脚本代码,实现方法请参考Python实现MaxCompute UDF # -*- coding:utf-8 -*- from odps.udf import annotate #函数签名,SQL执行前所有函数的参数类型和返回值类型必须确定&a…

Java线程怎样映射到操作系统线程

先说多线程模型,参考经典教材《Operating System Concepts , Silberschatz ,9th edition》 中文版是《操作系统概念,第9版》 https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/4_Threads.html 一个线程是CPU利用率的基本单元,包…

NSUserDefaults的用法

2019独角兽企业重金招聘Python工程师标准>>> NSDictionary* defaults [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]; NSLog("Defaults: %", defaults); 是用来获取设备上的所有的NSUserDefaults的设置。 上面代码输出了 2013-06…

计算机在轻工行业中的应用,计算机在不同领域中的具体应用

计算机以其卓越的性能和强大的生命力,在科学技术、国民经济、社会生活等各个方面得到了广泛的应用,并且取得了明显的社会效益和经济效益。计算机的应用几乎包括人类生活的一切领域,可以说是包罗万象,不胜枚举。据统计,…

自动驾驶L3量产追梦:如何跨过车规级和低成本门槛?

雷锋网新智驾按:从人类设想到落地前行,智能驾驶领域在2018年声响不断。在频繁的融资、技术创新和商业应用等信息背后,无数车企在公司战略中加入“网联化”、“自动化”,前几年涌现的自动驾驶领域的初创公司,近年来也开…

一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM

聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM经常遇到有人向我咨询这个问题,其实呢,网上帖子很多,也说的都对,但是呢,看客可不一定是真的理解了。所以今天在这里用最简短的语言让你明白这些区别。 看这种图表就一切…

awstats CGI模式下动态生成页面缓慢的改进

本文可以看做是 多server多站点情况下awstats日志分析 这篇文章的下篇,在使用过程中发现awstats在cgi模式下动态生成分析报告慢的问题 (尤其是有些站点每天两个多G的日志,查看起来简直是在考验人的耐性),本文分享一种改…

计算机水平flash试题,计算机flash考试试题

《Flash动画设计》课程考核方案一、考试班级及科目216班 《Flash动画设计》二、考试时间1、考核时间:90分钟2、考试地点:学校计算机3机房3、考核时期:十七、十八周内各课任教师自主选定三、考核形式上机独立完成所有操作。在规定时间内按考核…

CDH大数据集群安全风险汇总

一,风险分为内部和外部 首先内部: CDH大数据集群部署过程中会自动创建以服务命名的用户,如图所示 用户名(login_name):口令位置(passwd):用户标识号(UID):用户组标识号(GID):注释性描述(users)&…

有界阻塞队列ArrayBlockingQueue和无界阻塞队列LinkedBlockingQueue

ArrayBlockingQueue和LinkedBlockingQueue最大的区别是一个是有界无界,各有优劣。 先看实例代码: main函数起2个线程模拟生成消费者 import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.…

zabbix监控windows 服务器各项性能

Zabbix agent 在windows上安装部署1、 下载与解压地址: http://www.zabbix.com/downloads/2.4.0/zabbix_agents_2.4.0.win.zip解压zabbix_agents_2.4.0.win.zipconf目录存放是agent配置文件 bin文件存放windows下32位和64位安装程序2、 配置与安装2.1 配置zabbix agent相关配…

计算机设备板块超跌,半导体全线拉升,沪指强势突破3600点,午后A股会再次冲高回落吗...

周四开盘沪指开于3585点,和周三收盘价低开了8个点。上午开盘后沪指呈现低开高走的趋势,10点以后沪指持续拉升上涨不但顺利地突破了3600点而且还创了反弹新高。除了沪指以外深市三大股指也是全线翻红,上午A股的三大股指再次全线拉升并且均创了…

docker之基础

一、Docker简介 容器:运行在同一类用户空间上的程序打包在一起,相当于一个集装箱 Docker:码头装运工;把集装箱搬运到该有的位置。 Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC&…

Java一个线程能否结束另一个永不停止的线程

在Java中停止一个线程有三种办法 : 1.正常结束执行; 2.发生异常; 3.被其他线程stop(Java官方不建议) 参考:https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html 为什么Thread.stop弃用…

pxe cobbler ipmi bmc

http://blog.csdn.net/xuensong520/article/details/8922926 http://blog.csdn.net/xuensong520/article/details/8915945 http://www.wenzizone.cn/?p408 #执行外部脚本(后置脚本)vi /var/www/cobbler/ks_mirror/config/autoip.sh #创建脚本,自动设置Linux系统静…

广东电大计算机绘图试题,电大计算机绘图期末复习试题及答案参考小抄.doc

电大计算机绘图期末复习试题及答案参考小抄一、填空题(每小题1.5分,共30分)1.CAD的常用图形输入设备有???鼠标??、数字化仪、图形输入板、光笔、??键盘 等。2.CAD的软件可分为系统软件、支撑软件和???应用软件??? 软件三个层次。…

django07 字符串替换

1. 模板语言(字符串替换) 1. 母版和继承 1. 什么时候用母版? html页面有重复的代码,把它们提取出来放到一个单独的html文件。 (比如:导航条和左侧菜单) 2. 子页面如何使用母版? {% e…

【云和恩墨】一次 truncate 核心表衍生的安全管理思考

第一章 一次 truncate 核心表衍生的安全管理思考 云和恩墨 | 2016-05-06 17:56 本文编辑整理来自上周四晚云和恩墨大讲堂 黄嵩 关于数据安全问题的分享。安全问题涉及到信息系统的方方面面,尤其是其核心资产——数据的安全。无论是数据访问控制的裸露&#xff0…

合理估算线程池线程数量

参考《Java并发编程实战》 线程数量计算公式 公式:Nthread Ncpu * Ucpu * (1 W/C),各字段含义: Nthreads:线程数量 Ncpu:CPU的数量,Runtime.getRuntime().availableProcessors()…

通过regedt查看计算机密码,win10系统通过注册表设置定时更换密码提醒的处理步骤...

有关win10系统通过注册表设置定时更换密码提醒的操作方法想必大家有所耳闻。但是能够对win10系统通过注册表设置定时更换密码提醒进行实际操作的人却不多。其实解决win10系统通过注册表设置定时更换密码提醒的问题也不是难事,小编这里提示两点: 1、首先在…

苏宁零售云 App 稳定保障实践

1. 背景 苏宁零售云目标T4-T6级市场的业务,定位更靠谱的智慧零售解决方案和零售服务集成商,实战式跨界赋能。苏宁易购TO C的经验丰富,相关的方案很完善,但是零售云TO B相关业务启动后,业务增长迅速,App相关…

小酌重构系列[8]——提取接口

前言 世间唯一“不变”的是“变化”本身,这句话同样适用于软件设计和开发。在软件系统中,模块(类、方法)应该依赖于抽象,而不应该依赖于实现。 当需求发生“变化”时,如果模块(类、方法&#xf…

多线程并发编程需要注意虚假唤醒Spurious wakeup

虚假唤醒 Spurious wakeup 如果等待线程在没有通知被调用的情况下唤醒,则称为Spurious wakeup。 解决方案就是: 使用while条件判断,更好的方案是避免使用wait这种低级的API,而是使用高级的并发工具。 因为这些高级的并发工具都是经过无数…

高中计算机个人总结怎么写,毕业生自我总结范文

毕业生自我总结范文1时光飞逝,三年忙碌而充实的大学生活在一片有序的繁忙中将要过去了,回首过去三年,内心感慨万千。我是20xx年春参加电大机械班的学习,回顾这三年的电大学习之路,饱含了汗水和收获。总结是一面镜子&am…

python - 字符串的格式化输出

# -*- coding:utf-8 -*-project: jiaxyauthor: Jimmyfile: study_2_str.pyide: PyCharm Community Editiontime: 2018-11-01 15:12blog: https://www.cnblogs.com/gotesting/# 字符串s #空字符串# 1:字符串拼接# 1.1:字符串与字符串的拼接用 连接s_1 hellos_2 worlds_3 5…

一个冷僻的知识点try直接返回finally里的设置null其实无效

先看引用类型的代码&#xff1a; import java.util.HashMap; import java.util.Map;public class trycatchefinally {public static void main(String[] args) {System.out.println(getMap().get("KEY"));}public static Map<String, String> getMap() {Map&l…

​身份证工具类

2019独角兽企业重金招聘Python工程师标准>>> 身份证工具类 package com.pqs.common.tools;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util…

目前常用的服务器端网络操作系统有,目前常用的服务器端网络操作系统是()。...

在一台IP地址为192.168.1.1的Windows Server 2008 R2计算机上安装活动目录&#xff0c;建立一个森林根域test.com&#xff0c;保留默认的域功能级别&#xff0c;同时使该计算机成为域test.com的首台域控制器并承担着DNS服务器和全局编录服务器的角色。  操作步骤&#xff…

如何处理用代码创建SD Sales order时遇到的错误消息KI 180

2019独角兽企业重金招聘Python工程师标准>>> 错误消息KI 180:You must enter a company code for transaction Create sales document 代码: REPORT zcreate_so.DATA: ls_header TYPE bapisdhd1,ls_headerx TYPE bapisdhd1x,lt_bapiret2 LIKE bapiret2 OCCURS …