企业架构有2个问题比较核心的问题,还是人的问题。
一:用户。用户需要的是可扩展(功能升级),稳定性(可用,稳定),漂亮易用。
二:员工。员工面对的问题更多,更复杂。1 简单上手,2 高可用,稳定,监控告警等,3 深入关注业务,产品功能绩效,而非技术使用,而非公司流程,而非技术发展,而非人力成本和机器成本,而非多项目切换,而非接手其他项目。员工还关注技术分析和技术沉淀,所以内部分享也很重要,分享包括,技术入门,业务痛点,解决问题,架构设计等等。
本文会不断更新,包括增加一些好的中间件,包括对分类更合理的划分。
本文概括基础架构的所有组件,以此扩展,深挖,希望读者评论本文。可以有分类的建议,中间件的推荐,框架的推荐等。更注重实战,但是好的实战离不开对原理的了解。
[基础软件技术考虑点]
门户(全公司技术统一入口)
门户一般用于全公司统一入口,第一就是统一子系统UI,统一登陆,权限认证。子系统也必须有自己多高内聚,低耦合。内聚表现在用户可以一眼看到所有多产品,使用简单,无需学习切换浏览器等,低耦合表现在,子系统可以独立部署,独立接管权限功能等。
门户的分类可以参考阿里云,腾讯云等。但是比他们更多,因为设计到公司内部流程系统,工具到。一个可能到分类如下(一定要注意,产品化公司等任何项目产品,而组合一定是可以随意配置的,比如说把配置系统,可以放到任何栏目,或者模板都是可以的):
- 工作流:审批,请假,资源申请,任务管理(张三可以给李四创建任务)
- 中间件:消息队列,调度,
- 基础设施:日志,告警,监控,配置,
- 运维管理:应用管理,数据库,redis,
- 测试管理:功能测试,压力测试,
基础中间件
- [应用信息]。包括应用的名称,owner,部门,sdk版本等元信息,需要管理。不然后期推广新框架,做公司治理都会麻烦。
- 消息队列。 ,activemq(新一代叫activemq-artemis),kafka,apache-pulsar,rabbitmq,https://nats.io/,https://nsq.io/,qmq,zeromq
- 配置中心。 ,nacos,kms(秘钥管理)
- 调度平台。powerjob, xxl-job,elastic-job,vip-saturn
- 数据订阅。alibaba-canal,linkedin-databus, debezium + kafka-connect
- 网关。spring-gateway,zuul,kong,apisix,manba(golang),悟空(golang)
- 分布式事务。seata,消息事务,
- 微服务(5%)。dubbo,grpc,sofa-rpc,octo-rpc(系列),sentinel(2020版支持golang),spring-cloud全家桶,服务治理[流控[sentinel,hystrix]]
- 注册中心。zookeeper,etcd,eureka
- 服务网格。sofa-mosn,微软-OSM
数据中间件
- 分布式缓存。redis[cluster,sentinel,codis],hazelcast
- 分布式数据库。tidb
- 数据库中间件(框架)。shardingsphere,dble,kingshard(go)
- 分布式文件系统。fastdfs,seaweedfs,bookkeeper
- 数据库。[ ] ,注意,很多业务开发的同学,基本上都在和mysql打交道,所以mysql相关的技术是非常重要的。
数据中台
- BI系统。Davinci
- 调度系统。hera,DolphinScheduler
- 数据存储。hadoop
- 实时计算。clickhouse(单表)
- 离线计算。
- 数据采集和数据传输。datax + datax-web
基础设施
- 【监控】Logging。elk,loki,https://github.com/grafana/loki
- 【监控】Tracing。pinpoint,skywalking,eagleeyes,appdynamic,oneapm,pinpoint,dianping-cat,didi-nightingale,zipkin,jaeger
- 【监控】Metrics。时序相关的,prometheus + Grafana,datadog,Open-Falcon
- 【监控】其他。zabbix
业务组件
- 【用户中心】SSO登录。
- 【开放平台】外部调用内部的开放平台,内部调用外部的outing项目。
- 【公共服务】动态日志。消息推送平台:短信,邮件,微信,钉钉,飞书。
运维管理
- 发布平台|tars|jenkins|KubeOperator|Rundeck|opendevops|walle-web.io|Travis
- rancher
- 宜信-kplcloud
- k8s
- 18款工具,https://mp.weixin.qq.com/s/CAroslMhKt21y6_XYYXqQg
开发效率平台
- 代码生成器。code-gen
- 基础框架
- 工具类
- 服务器,mysql,zk等资源申请平台。
- 业务开发流程化标准平台。需求->创建项目->资源申请->上线->监控->下线
- 企业开发平台(包括用户,权限,代码生成,服务治理,各种开发用到的工具继承进去)
优秀框架
框架组件
对于业务开发的同学,不可避免的用一些性能不高的类,比如说喜欢用StringBuffer,而非StringBuilder,所以基础框架需要不断深入研究底层数据结构,让业务开发使用公司公共组件类,而非jdk或者开源组件。没必要花时间去研究下所有的类的数据结构高效性。由基础框架统一规划,文档输出。
- 常用类数据结构的封装。对于业务开发的同学,有时候不可避免用一些性能不好
- 短信|邮件|钉钉等第三方调用。
- 分布式锁。
- guava->本地缓存,本地限流
- apache-common -> 对象池
- jushata
大数据
测试
- 自动化测试。robotframework
- 压力测试平台。apache-jmeter,https://github.com/smallnest/go-web-framework-benchmark,wrk
- 破坏测试平台。ali-chaosblade
问题和性能分析工具
规范
- 日志,分之,编码,等的规范
- 编码规范。
- 项目结构规范。
- 日志规范
- 接口文档。swagger[knife4j]
前端UI技术
一个好的中间件产品,怎么能少不了一套好的ui呢。
- layUI
- icework
- ant.design
开源组织
- 宜信开源:http://college.creditease.cn/
- SOFA团队:https://www.sofastack.tech/projects/
- 美团点评:https://github.com/Meituan-Dianping
- 携程:https://github.com/ctripcorp
- xxl系列:https://www.xuxueli.com/page/projects.html
项目管理
- wizard
- 禅道
- confluence
- 代码管理:阿里云code,gitee,gitlab,gogs
- 中间件产品化之代码文档资源管理
中间件通用技术
- 网络(netty)
- 存储(mysql,文件)
- 算法(一致性哈希,raft等)
网友评论