思想
在接收到一个新的新项目时,架构师的职责是建立项目的业务与技术实现之间的桥梁。在翻译业务到技术实现的过程中需要进行业务建模、技术设计等方面的工作。业务建模和技术设计过程中都有各自领域的知识体系。基本上每个知识体系都是由上层的理论、概念和方法论的提供方向上的支撑,由下层的实施方法、实施工具进行具体工作的实施。
在微服务实践系列文章中主要介绍在微服务实践过程中可能会考虑到的方向、以及这些方向可供选择的技术工具、并会涉及少量的架构设计理论知识。而在架构设计系列文章中会介绍架构理论、架构设计实践、以及架构设计中的分析与评估方法。
因为本系列文章主要介绍的是技术工具的内容,就会根据技术工具的特性进行介绍。不过本系列文章中不会像网络上其他的技术文章一样以某项技术为维度进行文章编写。而更像书本以技术的维度进行整理。以这种方式一方面是符合了我们的【实践】题目,便于在实践过程中使用技术工具组织整体架构。另一方面以技术方向而不是某一个技术实现,也是以一种自顶向下的思维方式进行说明(软件研发人员一般会使用自底向上的视为方式)。
技术方向
对于微服务中技术的全局中可能会有很多门技术需要学习与掌握。这里以一张图的方式为大家展示可能在微服务中遇到的技术与实现方向:
技术全景
作者把微服务实践中的技术方向有分了四部分:微服务管理,存储技术,业务支持,DevOps。微服务管理是介绍分布式系统的技术实现部分。存储技术独立出来的意义在于存储和大数据,人工智能等大型的独立系统有关系。业务支持是阐述在业务实现过程中可能会用到的技术,但是不和通用的微服务技术相关的技术。DevOps是在微服务设计和敏捷的提倡下需要接受一切自动化的方式。
技术工具
上图中的浅绿色部分,是说明所有的技术方向。之后所有的文章都会按照这个规范进行编写。右侧每一列都是一项技术实现,这些技术实现可能会涵盖不同的技术方向。所以,这里也会在下面的文章中在不同的技术方向上推荐不同的实现技术。例如:做数据库与缓存同步的工具可选范围不多的情况,我就只能推荐Gearman。
从图中可以看到微服务技术关注的大概方向,基本上整理出来五个大方向。并在五个大方向上有相关的具体技术方向进行补充。现在基本上就缺具体的实现技术选型:
- 微服务管理
内容发布
CDN,分布式存储等
远程过程调用
RPC,RMI,JMS,AMQP,
服务发现
DNS,zookeeper,spring eureka,spring consul,ETCD,REDIS
服务注册
DDNS,zookeeper,spring eureka,spring consul
网关
Zuul,Kong,Nginx Plus,OpenResty,Spring Cloud Gateway
负载均衡
LVS,Nginx,F5
高可用
Haproxy,keepalive
服务编排
Netflix Conductor,uber/cadence,zeebe-io/zeebe,ing-bank/baker,Spring Cloud Zuul, Node-RED,ApiConfig
统一配置
Spring Config,ctripcorp/apollo: Apollo,git,nginx,Consul,Netflix Archaius
分布式任务管理
xxl-job,Elastic-Job,
异步任务
AMQP,Spring Cloud,Dubbo
高速缓存
Redis,Memcache,Mysql Memory DB,H2
前后端分离
Swagger,API Gateway
服务降级
Dubbo,Spring Cloud Hystrix
服务限流
Dubbo,Spring Cloud Hystrix
服务熔断
Dubbo,Spring Cloud Hystrix
故障恢复
Docker,Swarm,K8s
事务管理
sage,fescar,gts,Narayana
动态选举
zookeeper
用户
用户认证,权限管理,用户计费,会话管理
OpenAPI
Kong,APIgee
对象存储
minio,riakcs(亚马逊S3技术),ceph
事件驱动
EventBus, spring event
并发处理
akka,Actor
全局唯一性编码
UUID,SetNX,雪花算法,
规则引擎
Drools
- 存储技术
- 业务支持
LBS
木有开源滴。
AI
BigData
全文检索
Lucene
静态化
freemark
智能推荐
mahout
用户跟踪
木有开源滴。
IDaaS(身份认证及服务)
暂未找到
SEO/SEM
暂未找到
网络爬虫
Python
特性开关
Flagr,Togglz,FF4J,Fitchy,Flip
租户管理
mybaits-plus,Citus,mycat
第三方支付
需要聚合支付。
可视化
Hue,impala,DataDeck,Tableau,Redash,Metabase,Superset
数据可视化
jtablesaw / tablesaw
Processing
可视化编程
CoatiSoftware / Sourcetrail
可视化控件
Echarts,D3.js,Tableua
前端低代码
20+个可视化搭建工具,一次玩个够
信息推送
木有开源滴。
- 质量
- DevOps
运行环境
基础环境都在这里。
Terraform(基础设施即代码)
升级
flagr
部署
Puppet、Chef、Ansible和SaltStack
版本管理
scm
日志管理
elk,flume
监控
Zabbix、Nagios、Open-Falcon
可视化
全局可视化系统
持续交付
Spinnaker
指标监控
Telegraf InfluxDB Grafana
应用性能
lb的使用情况
调用链
zipkin,pinpiont,skywalking
接口管理
swagger,yapi,rap2
总结
这里提供了完善的分布式系统,微服务,SOA的技术方向体系。之后可以方便的从本系列中选择最优工具加入到业务系统中。
出处:https://www.jianshu.com/p/b64fa4234549