美文网首页
微服务架构简介

微服务架构简介

作者: zhglance | 来源:发表于2019-08-28 15:49 被阅读0次

    微服务架构由Fred Gerorge在2012年提出,后来由Martin Fowler进行推广和发扬。

    1.什么是微服务

    微服务(MicroServices)将单个应用拆分成多个小的服务单位,小的服务之前基于HTTP的RestFull API进行资源访问和操作。
    微服务的特征:
    1.由多个独立的服务构成应用系统;
    2.每个服务单独部署,单独进行;
    3.每个服务具有独立的业务;
    4.可以进行分布式管理。

    微服务要解决的问题:
    1.防止雪崩
    防止因为某些服务访问压力过大时,影响其他服务模块,如访问限流;
    2.功能降级
    当服务故障时,要通过容错手段让程序运行下去,不影响整体运行,如当DB故障时,可以先返回cache中的数据,但是不保证数据和DB的一致性,等待DB的恢复;
    3.幂等性
    即访问多次和一次具有相同的业务结果,不会导致不同的业务结果;
    4.超时控制
    防止因为一个服务访问等待时间过长,导致整个应用性能下降;
    5.熔断
    在一定时间周期内(如10分钟),发生一定数据量的失败后,熔断器开启,请求快速返回失败,过了某个时期后(如5分钟),查看服务是否正常,然后充值熔断器;
    6.服务隔离
    当所依赖的服务故障时,服务能够隔离故障,保证业务能够运行下去;
    7.可伸缩
    可以根据并发量来适当的扩容和缩容;
    8.数据隔离
    每个服务有单独的数据库,降低数据耦合。

    2.微服务的优点:

    2.1 服务实现了低耦合性,服务可以独立部署;
    2.2 独立的服务可以快速的启动;
    2.3 独立的服务更适合快速迭代和演进;
    2.4 有利于团队和人员分工和协同开发;
    2.5 有利于服务的动态扩容;
    2.6 独立的服务更像是抽取的公有方法,可以供多个其他服务调用;

    3.微服务的缺点:

    3.1 分布式部署,各个独立模块之间的多次通信带来了较高的复杂性,需要解决网络问题,容错问题等;
    3.2 各服务拥有独立的DB,带来了分布式事务的难题;
    3.3 服务版本版本,当一个服务的接口改变时,所有的调用方法都收到影响,而且维护接口文档和接口的一致性也是不可忽略的问题,极大的增加了测试工作量;
    3.4 运维难度提升,随着服务个数的增加,服务的部署,监控都变得复杂。

    4.主流微服务架构对比

    序号 微服务框架 描述 通信协议 负载均衡 服务注册和发现 高可用和容错 跨语言平台 备注
    1 dubbo 阿里开源框架 rpc 支持 支持 支持 不支持 文档丰富,容易上手
    2 Spring Boot/Cloud 基于Spring的整套微服解决方案 HTTP 支持 支持 支持 支持 目前特别热门,功能强大,几乎成为了微服务架构的首要选择
    3 Thrift 跨语言的rpc框架 rpc 不支持 不支持 不支持 支持 目前流行度比较低
    4 gRPC Google的开源RPC框架 rpc 不支持 不支持 不支持 支持 功能还不够强大

    相关文章

      网友评论

          本文标题:微服务架构简介

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