微服务学习-> 技术选型

292 阅读2分钟

参考

Sql vs NoSql

Sql关系型数据库

问题

  • 结构死板:表结构更新难度,可能需要迁移
    • 不适于数据结构经常变化的互联网应用
    • 每次变化开发强度较大,需要改动的地方多
  • Scale难度大
    • Master-Slave模式
    • Sharding难度大
    • 缓存效率不高
  • 新操作支持比较弱

NoSql数据库

问题

  • 数据完整性与一致性
    • 缺乏事务支持
    • 缺乏外键支持
    • 可以有原子操作
  • 不支持Sql查询
    • 已有项目的迁移问题

HTTP、RPC、Restful

HTTP

特点

  • 解决问题:
    • 客户端到服务端的www通讯问题
    • 客户端到服务端拿资源问题
  • Request-Response模型
  • 基于text文本协议
  • 无状态
  • 支持session

RPC

特点

  • 像调用本地方法一样调用远程方法
  • 通过消息传递request-response
    • 消息格式可以多种多样
    • 可以同步、异步和One-Way
    • 支持非常多的协议,http只是其中一种

Restful

Rest(Representational state transfer)特点

  • 客户端到服务端资源增删改查(还有其他)操作
  • 面向资源,无状态
  • 整齐的操作(URL)规范,好缓存
  • 服务端实现一群无状态的操作

问题

  • 数据定制问题
  • 多次请求问题
  • 异常处理问题
  • 返回数据格式与字段未知,过分依赖文档
  • PUT和DELETE需要前后端支持
  • 每个resoure都有自己的一组end point或者URL
    • 管理维护困难
  • 安全隐患
    • 在URL上传参可能会暴露敏感信息

单体服务 SOA 微服务

单体服务

特点

  • 往往单一编程语言单一框架实现
  • 各个模块之间紧耦合
    • 牵一发而动全身
    • 海量测试用例
    • 巨型软件包
    • 部署时间比较长
    • 监控难度大

微服务

特点

  • 每个微服务可以独立开发、独立测试、独立部署
  • 不同微服务可以采用不同编程语言,不同框架
  • 微服务间松耦合(RPC或Rest API)
  • 每个服务往往是一个独立的业务系统

未完待续