• Spring Boot分布式系统实践【1】架构设计


    前言

    【第一次尝试去写一个系列,肯定会有想不到的地方,欢迎大家留言指正】

    本系列将介绍如果从零构建一套分布式系统。同时也是对自己过去工作的一个梳理过程。

    本文先整理出构建系统的主要技术选型,以及技术框架。其实在形成如下框架前,我参考了许多资料和结构,也结合中小型公司的时间以及人力等因素综合。

    选型

    分布式调用框架

    可选的有  dubbox, SpringCloud

    dubboX:当当基于dubbo搞的,还在维护可以一用,推荐。

    SpringCloud:整合了大量组件,相关文档比较复杂,需要针对性的进行阅读,学习成本还是需要一些。

    最后选择:dubbox + zk +Spring Boot

    云平台

    可选方案:阿里云、腾讯云、百度云、华为云等等

    大概就是比较不同平台相同配置价格,以及同一平台下不同区域间的价格等等,最终选择阿里云。

    Redis

    用来做缓存自建成本有点高,选择使用阿里的redis

    负载均衡

    可选方案: SLB, Nginx.

    SLB要收钱,但是比较便宜,有保证,不会挂。 但是可配置的很少,不能根据域名做ip映射等

    最后为了减少维护成本,直接使用SLB【测试环境还是要搭建nginx】

    CDN

    用来缓存静态文件等,七牛、阿里可选

    最终选择七牛,服务好,反应及时【价格也会低一些】

    身份认证

    可选方案:session+redis、jwt

    从扩展性来说确实jwt比较适合,但是有一个小麻烦,就是处理token的失效问题。【其实主要问题是使用token增加了代码复杂度】

    最终选择session+redis

    扩展:有人会说浏览器可以很好支持cookie但是移动端很难支持,其实移动端支持也不难。iOS端可以从HTTPCookieStorage读取cookie,请求时设置cookie。Android端使用Cookiejar。

    权限控制

    shiro:一直都在用shiro,也比较简单

    数据库

    oracle:使用阿里云的话自建oracle还是比较麻烦的

    mysql:可以自建也可以用阿里的RDS

    最终选择阿里云数据库RDS

    持久层框架

    常用Mybatis,那就继续用吧

    部署架构图

     

    附一张阿里的部署架构图供大家参考

     

    完整流程图地址:https://www.processon.com/view/5b4d9b26e4b09a67416e1611

    项目调用关系图

     

    项目模块说明

    service 为业务层 即服务提供者(包含 service实现及facadeService实现、Dao)

    facade为接口层(只定义 接口类 与 实体类)

    middle为服务中间层 (通过facade层 调用service层 )可以理解为web层与api层共用的模块

    web为服务消费者,包含web页面 (通过facade层 调用service层 )

    api为服务消费者,主要为客户端提供api服务 (通过facade层 调用service层 )

     

  • 相关阅读:
    抽象与接口的综合练习
    java构造函数能否被继承,为什么?
    题解 【USACO 4.2.1】草地排水
    题解 【NOI2010】超级钢琴
    题解 [USACO Mar08] 奶牛跑步
    题解 【NOIP2016】魔法阵
    题解 对称二叉树
    题解 【NOIP2014】解方程
    题解 【NOIP2010】关押罪犯
    题解 贪吃蛇
  • 原文地址:https://www.cnblogs.com/Halburt/p/10442538.html
Copyright © 2020-2023  润新知