美文网首页
WCS 系统技术选型

WCS 系统技术选型

作者: tcny | 来源:发表于2020-01-19 22:16 被阅读0次

    面向开发

    微服务框架

    • Spring Cloud

    服务发现

    • Nacos

    集中配置

    • Nacos

    API 网关

    • Spring Cloud Gateway

    进程间通信

    • OpenFeign: REST( HTTP + JSON )
    • Dubbo: rpc

    Dubbo 可以与 Spring Cloud 较完美结合,理论上 OpenFeign 和 Dubbo 可共同使用,但在实际开发中,一般情况下要选择一种方式。
    REST 跨平台,如果有使用异构语言的需求,这是最简洁的方案。基于文本的协议,序列化和反序列化性能较低,但一般情况下还好。需要要写文档,或者通过工具(例如 Swagger)生成文档,调用方需要脱离编码环境阅读文档,文档维护有一定成本。
    Dubbo 性能更高,rpc 方案对开发来说也很方便,Service 不必包一层 Controller 即可对外提供服务。封装 API 层,接口情况一目了然,文档维护成本很低。
    综上,个人倾向使用 Dubbo 进行服务间同步调用。主要还是从开发和维护的角度出发。

    • RocketMQ: 异步,消息队列
      Spring Cloud 封装了 Spring Cloud Stream, 阿里提供了 Stream 基于 RocketMQ 的实现。

    客户端负载均衡

    • Ribbon: 使用 Feign 时使用
    • Dubbo 内建

    断路器

    • Sentinel
      Sentinel 阿里出品,支持主流框架,并自带Dashboard。

    分布式事务

    • Seata
      尽量通过设计绕开对分布式事务的依赖。

    数据库

    • MySQL

    ORM

    • MyBatis
      使用原生 SQL,出现故障和性能瓶颈时,可采取的手段较多,较容易,DBA 和开发都可介入。一般情况下需要付出维护 xml / 注解 的额外精力,有一些工具(e.g. 逆向工程 和 MyBatis Plus)可用。
    • JPA
      面向对象,只需要关心少量 Java 代码,开发十分便捷。一般情况下与 MyBatis 的性能差距其实没有很大。如果没有几倍的差别,不必纠结于性能,必要时使用视图和更高级的查询方式,比如 ElasticSearch。JPA对数据查询封装了一套基于JAVA的语法,可以屏蔽底层数据库的差异,但带来的是学习成本。JPA也支持原生 SQL。

    Spring Data JPA 与 Spring 的理念一致,封装统一接口,屏蔽差异,解决一个问题的方案永远不止一种。从这个角度来说,不同程序员的知识储备不同,选择的方案不同,团队协同开发时学习成本增加。MyBatis 则没有这个问题,只需要学习 SQL 这一门大家都会的 DSL,和 基本 API 的使用即可。

    建议 MyBatis。

    缓存

    • Redis

    统计及高级检索

    • ElasticStack

    安全框架

    • Spring Security
      原理简单,基于一系列 filter 实现不同的策略,但代码复杂。
    • 自研
    • OAUTH 2.0 实现 SSO
    • JWT,无状态(实现高阶功能时也会在服务器保留少量状态)

    反向代理及静态服务器

    • Nginx

    面向运维

    TODO

    版本说明

    组件 版本
    Spring Cloud Greenwich (目前是SR4)
    Spring Cloud Alibaba 2.1.0 或 最新稳定版
    Spring Boot 2.1.x (目前是2.1.11)
    其他 满足以上版本的最新稳定版

    相关文章

      网友评论

          本文标题:WCS 系统技术选型

          本文链接:https://www.haomeiwen.com/subject/qtedzctx.html