微服务实践目录,可以参见连接。

思想

在接收到一个新的新项目时,架构师的职责是建立项目的业务与技术实现之间的桥梁。在翻译业务到技术实现的过程中需要进行业务建模、技术设计等方面的工作。业务建模和技术设计过程中都有各自领域的知识体系。基本上每个知识体系都是由上层的理论、概念和方法论的提供方向上的支撑,由下层的实施方法、实施工具进行具体工作的实施。
微服务实践系列文章中主要介绍在微服务实践过程中可能会考虑到的方向、以及这些方向可供选择的技术工具、并会涉及少量的架构设计理论知识。而在架构设计系列文章中会介绍架构理论、架构设计实践、以及架构设计中的分析与评估方法。
因为本系列文章主要介绍的是技术工具的内容,就会根据技术工具的特性进行介绍。不过本系列文章中不会像网络上其他的技术文章一样以某项技术为维度进行文章编写。而更像书本以技术的维度进行整理。以这种方式一方面是符合了我们的【实践】题目,便于在实践过程中使用技术工具组织整体架构。另一方面以技术方向而不是某一个技术实现,也是以一种自顶向下的思维方式进行说明(软件研发人员一般会使用自底向上的视为方式)。

技术方向

对于微服务中技术的全局中可能会有很多门技术需要学习与掌握。这里以一张图的方式为大家展示可能在微服务中遇到的技术与实现方向:
技术全景
作者把微服务实践中的技术方向有分了四部分:微服务管理,存储技术,业务支持,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,Spring Cloud Zuul, Node-RED
  • 统一配置
    Spring Config,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

    - 存储技术

  • 结构化数据存储
    Postgresql,(不推荐Mysql)

  • 半结构化数据存储
    redis,MongoDB
  • 无结构数据存储
    hdfs,mfs,fastdfs

    - 业务支持

  • LBS
    木有开源滴。

  • AI
  • BigData
  • 全文检索
    Lucene
  • 静态化
    freemark
  • 智能推荐
    mahout
  • 用户跟踪
    木有开源滴。
  • SEO/SEM
  • 网络爬虫
    Python
  • 特性开关
    Flagr,Togglz,FF4J,Fitchy,Flip
  • 租户管理
    mybaits-plus,Citus,mycat
  • 第三方支付
    需要聚合支付。
  • 可视化
    Hue,impala,DataDeck,Tableau,Redash,Metabase,Superset
  • 信息推送
    木有开源滴。

    - 质量

  • 代码扫描

  • 自动测试
  • 混沌实验
    ChaosBlade,Chaos Monkey

- DevOps

  • 运行环境
    基础环境都在这里。
    Terraform(基础设施即代码)
  • 升级
    flagr
  • 部署
    Puppet、Chef、Ansible和SaltStack
  • 版本管理
    scm
  • 日志管理
    elk,flume
  • 监控
    Zabbix、Nagios、Open-Falcon
  • 指标监控
    Telegraf InfluxDB Grafana
  • 应用性能
    lb的使用情况
  • 调用链
    zipkin,pinpiont,skywalking
  • 接口管理
    swagger,yapi,rap2

总结

这里提供了完善的分布式系统,微服务,SOA的技术方向体系。之后可以方便的从本系列中选择最优工具加入到业务系统中。

参考:

Spring Cloud 体系
Netflix OSS
BAT 程序员们常用的开发工具
数据可视化的开源方案: Superset vs Redash vs Metabase (一)
运维福音——Terraform 自动化管理京东云