zoukankan      html  css  js  c++  java
  • 分布式系统之平台十大系统

    平台应该怎么设计,它和框架有何不同?很多时候大家常常将它们混为一个概念,其实不然,在我看来平台是管理生态建设的,而框架是规范和引导编码的,两者相互成就彼此。使用框架开发出来程序后,应该交由平台控制和管理,平台不只是管理程序(产品/项目),最主要的是为人提供服务,这也是软件存在的本质,为使用者提供优质的体验和舒畅的服务,通过电子化办公简化业务复杂度和业务量。

    站在程序员的角度,一旦说到框架和平台,那么首先想到的应该是选择哪一门编程语言去实现?在选定编程语言后应当选择那一套技术去实现,这应该是大多数国人的习惯,因为我们习惯了使用别人设计开发出来的框架。然而今天我要说:你可以自由选择编程语言和编程语言所存在的框架,因为我说的平台和架构与编程语言没有直接关系,你可以选择Java、也可以选择C#、还可以选择GolangPHPPython......,只要遵循云平台和程序架构设计规范即可。

    如果你不相信我说的,请看下边我罗列的一个基础平台下应该具备的十大系统:

    1.控制系统设计
    1.1.服务端
    1.1.1.版本管理:发布程序的各个版本
    1.1.2.集群管理:产品,版本(v1.0,v2.0等),程序,实例
    1.1.3.配置管理:实例配置参数,与版本直接相关
    1.1.4.编排管理:地域,语言,时区
    1.1.5.升级管理:设置升级方案
    1.1.6.更新管理:程序自我更新
    1.1.7.状态管理:实例报告自身状态
    1.1.8.注册管理:服务注册上线
    1.1.9.负载均衡管理:服务发现与使用
    1.1.10.问题管理:服务下线、服务异常,更新失败,状态异常等
    1.1.11.自动管理:依据状态报告自我调控
    1.1.12.通知管理:配置异常时消息通知事项
    1.2.客户端
    1.2.1.版本管理(发布程序的各个版本)
    1.2.2.发布管理(设置升级方案)
    1.2.3.更新管理(完全更新,补丁式更新)

    2.平台系统设计
    2.1.资源管理(产品/程序,模块/菜单/命令等)
    2.1.1.资源权限管理(资源与角色,角色与用户)
    2.1.2.资源教程管理(以书籍形式供他人阅读使用
    2.1.3.资源版本管理(用于控制调用方与服务方版本的一致性)
    2.2.安全管理
    2.2.1.安全令牌管理(token)
    2.2.2.安全名单管理(黑白名单,IP地址)
    2.2.3.安全防御管理(脚本攻击,xss/csrf等)
    2.2.4.安全算法管理(rsa、aes、shaXXX等)
    2.2.5.安全位置检验(验证当前IP地址的位置,以及常用IP地址等信息)
    2.2.6.安全状态检测(账户的安全状态,如登录地,密码状态等)
    2.3.分布式管理
    2.3.1.主子库管理(根据定义自动创建子库表结构,同步基础数据)
    2.3.2.读写库管理(实现读写分离提升性能)
    2.4.用户管理
    2.5.机构管理
    2.6.日志管理
    2.7.消息管理
    2.8.高级管理
    2.8.1.缓存管理
    2.8.2.队列管理

    3.地理系统设计
    3.1.地球/洲/地域/国家/区域/省级/市级/区县/办事处或乡镇/街道或行政村/小区或村庄
    3.2.扩展:电信编码,网址后缀,邮政编码,语言编码,时区划分,名称管理,简介信息等

    4.语言系统设计
    4.1.用于打造多语言生态环境

    5..通用系统设计
    5.1.提供公共数据服务,如天气等

    6..生态系统设计
    6.1.用于打造生态圈,接入开发者和合作伙伴

    7.外联系统设计
    7.1.管理购买或接入他人系统服务的信息

    8..文件系统设计
    8.1.用于存储非网格化的文件,如图片,音频,视频,文本文档等。

    9..流程系统设计
    9.1.用于表单审核控制管理,独立出来专业管理

    10.反馈系统设计
    10.1.适者生存,更好服务用户和市场。

    上述系统仅从平台角度设计,并不包含具体的某个程序,如网关系统等。看过后是否还在怀疑我说话,一直以来都在坚持、并努力做到从零开始设计、编码、测试、部署,去一探底层技术的究竟,尽可能的避免养成依赖他人技术的习惯,为此职业生涯更换过多次工作,虽然很坎坷,但终归有所获有所得,在此特别强调一点,不是建议大家都去造轮子,而是建议大家做到技术人应该具备的品质,去探索、去实验、去发现。

    想要设计出一套自主可控的技术平台,非常不容易,也绝非一朝一夕间可以早就的,这需要持续的投入(人力、物力、财力)和长时间的研发,就像我一直将“研发”和“开发”这两个词着重划分开解释一样,因为在我看来研发是创造,从无到有,而开发是制造,两者不可同日而语,很多boss都希望自己的技术团队可以弄出一套像淘宝、京东等一样的平台,只是忽略了这么浩大的工程所需要的投入,说远了,当然这也绝非不可能实现,只要是敢于投入、放得开、放得下、天道酬勤,有基于实际的设计规划和可行的实施方案,志存高远、励精图治,循序渐进、有条不紊的推进,最后是有可能实现最初的希望。

  • 相关阅读:
    清除内联元素间默认的间隔
    Idea配置SpringBoot热部署
    导出下载模板
    Java 使用Graphics2D 进行画图
    【Modbus】Java使用 modbus-master-tcp 读取和写入Modbus服务器数据
    解决txt文件上传oss服务器乱码的问题
    docker java.lang.NoClassDefFoundError: org/bouncycastle/** 解决
    解决SpringBoot 报错 Error parsing HTTP request header
    React+AntDesign使用Tree树控件完整展现其中的层级关系,并具有展开收起选择等交互功能
    AntDesign使用Form表单出现You cannot set a form field before rendering a field associated with the value
  • 原文地址:https://www.cnblogs.com/Jkinbor/p/15465251.html
Copyright © 2011-2022 走看看