博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微服务
阅读量:2421 次
发布时间:2019-05-10

本文共 2180 字,大约阅读时间需要 7 分钟。

目录

 

微服务的优缺点

优点

  • 易维护,扩展性好
  • 启动快,修改局部无需重新部署整个项目。如果是单体项目,上线时时需要重新部署整个项目(所有代码),风险大、部署速度慢。
  • 技术栈不受限制,每个服务可以使用不同的编程语言、框架技术编写
  • 可针对性地设置集群大小,比如电商网站,商品、订单模块负载大,集群节点多些;积分模块负载小,集群节点少些
     

缺点

  • 要部署、维护多个服务(服务治理),运维难度加大
  • 重复代码多。每个微服务都是独立的,不能直接使用其它微服务中的类|接口,需要把要用的类|接口打包为jar包引入或者copy过来
  • 事务要使用分布式事务,技术难度大。eg. 购买商品获赠积分,订单服务下订单+积分服务修改积分,这是一个事务,但不在同一个应用中,使用事务难度增大。

微服务的优点就是单体应用的缺点,微服务的缺点就是单体应用的优点。

 

微服务的拆分、设计原则

拆分原则:一个模块不依赖或极少依赖其它模块,但需要给多个模块(2个及以上)提供数据。

 

设计原则

  • 单一职责,每个服务只处理本模块的业务,不处理其他模块的业务
  • 接口明确、可扩展,方便服务间的相互调用、维护升级
     

每个服务都是独立的,单独进行开发、测试、部署。

 

微服务的一些概念

  • 网关  路由转发+过滤处理
  • 服务治理  服务的注册发现
  • 配置中心  统一管理各节点的配置
  • 链路追踪
  • 熔断  保护服务节点本身、被调者,提升容错、可用性

 

微服务架构常见解决方案

dubbo:zookeeper + dubbo + springmvc/springboot

通信方式:rpc
注册中心:zookeper/redis/nacos
配置中心:diamond、nacos
 

SpringCloud:全家桶+轻松嵌入第三方组件(Netflix 奈飞)

通信方式:http restful
注册中心:eruka
配置中心:config
断路器:hystrix
网关:zuul/gateway
分布式追踪系统:sleuth+zipkin
 

Spring Alibaba Cloud:全家桶+阿里生态多个组件组合+SpringCloud支持

通信方式:http restful
注册中心:nacos
配置中心:nacos
断路器:sentinel
网关:gateway
分布式追踪系统:sleuth+zipkin

springcloud alibaba是springcloud的子项目,常搭配spingcloud的其它组件使用,springcloud alibaba不用自己编写注册中心、配置中心,简化了开发,并且提供可视化界面便于操作。

 

怎么调用服务

  • RPC:远程过程调用,像调用本地服务(方法)一样调用服务器的服务,支持同步、异步调用,建立TCP连接, RPC数据包小
  • Rest(Http):http请求,支持多种协议和功能,开发方便成本低,http数据包大,可以使用resttemplate或者httpclient发起http请求。

 

Dubbo、SpringCloud的对比

Dubbo

  • 通信方式:rpc
  • 注册中心、配置中心:zk
     

SpringCloud

  • 通信方式:http restful风格
  • Eureka 服务治理
  • Ribbon 负载均衡器,分发负载
  • Feign 声明式服务调用
  • Hystrix 断路器,容错保护、熔断,保护自己、被调者
  • Zuul 网关(API Gateway),路由转发+过滤器
  • Config 配置中心,集中管理配置
  • Bus 总线
  • Sleuth+Zipkin 分布式链路追踪

与SpringCloud相比,Dubbo很多功能都没有。SpringCloud的特点是组件多、功能齐全;Dubbo的特点是高性能(rpc)。

 

海量请求下的微服务架构存在的问题

高并发下存在的问题:微服务拆分多个系统,服务之间互相依赖,可能会由于系统负载过高,突发流量或者网络等各种异常情况 导致服务不可用。

核心思想-面向失败编程

  • 不要外界影响
  • 不被请求拖垮:上游服务、下游服务

 

容错

容错:当系统某一部分出问题时,对系统的影响程度、系统是否能正常运行。

 

提升系统容错的常用方式

  • 集群,增加节点数量

  • 为请求设置超时

  • 设置断路器

  • 限流

  • 漏斗,不管流量多大,均匀的流入容器,令牌桶算法,漏桶算法

  • 熔断

  • 降级:比如双11直接关闭取消订单的入口(服务)

  • 隔离:服务和资源互相隔离,比如网络资源,机器资源,线程资源等,不会因为某个服务的资源不足而抢占其他服务的资源

熔断和降级互相交集

  • 相同点:从可用性和可靠性触发,为了防止系统崩溃
    最终让用户体验到的是某些功能暂时不能用
  • 不同点:服务熔断一般是下游服务故障导致的,而服务降级一般是从整体系统负荷考虑,由调用方控制

微服务的容错,业界目前有Sentinel、Hystrix,相对于AlibabaCloud而言,Sentinel是最好的搭配

 

服务监控

防止问题发生,当问题发生时方便定位问题。

在这里插入图片描述

 

JVM监控

在这里插入图片描述第一个springboot admin中包含了。

 

GC日志、线程Dump日志、堆Dump可视化分析

打印gc信息,也可以使用其他方式获取gc日志文件

在这里插入图片描述
上传文件到下列中的一个网站进行分析,也可以使用右边的替代品
在这里插入图片描述

 

日志

一般使用ELK,elk存在一些变种,比如logstash也可以换成filebeat

转载地址:http://gwhlb.baihongyu.com/

你可能感兴趣的文章
云有约 | 首攻RSA,天空卫士“秀肌肉”怎么样了?
查看>>
数据中台精华问答 | 数据中台和传统数仓的区别是什么?
查看>>
这是一则计算机视觉顶级会议CVPR与腾讯的爆闻,啥?
查看>>
如何用30分钟快速优化家中Wi-Fi?阿里工程师有绝招
查看>>
云有约 | 在去O的道路上,AWS表示:经验可复制,惊喜并非只属于我们!
查看>>
趣挨踢 | “菜鸟”程序员和“大神”程序员的差别竟然这么大...
查看>>
工作量不断增加的微软Azure,正缩小与亚马逊AWS的差距
查看>>
要闻君说:印度公司要在京沪建立数据中心;超 10 万个 GitHub 仓库可泄漏 API 令牌及密钥...
查看>>
那些中国式家庭的小烦恼,我看用AI来解决就“都挺好” | 技术头条
查看>>
漫话:如何给女朋友解释什么是系统可用性? | 技术头条
查看>>
大龄程序员失业后,看他们是如何破局突围的? | 技术头条
查看>>
分布式架构系列: 负载均衡技术详解 | 技术头条
查看>>
2019年技术盘点微服务篇(二):青云直上云霄 | 程序员硬核评测
查看>>
Docker简介与简单使用 | 技术头条
查看>>
成立一周?谷歌人工智能道德委员会解散了?近日,金山云和小米刚签订了不超过9000万的硬件产品供应协议,闹哪样? | 极客头条...
查看>>
分布式精华问答:分布式环境下如何保持数据一致性的?| 技术头条
查看>>
微服务进阶避坑指南 | 技术头条
查看>>
要闻君说:台积电将为iPhone生产5纳米A系列芯片?腾讯云TStack与银河麒麟完成互认证……...
查看>>
Hadoop精华问答:Hadoop框架最核心的设计是?
查看>>
终于有人把5G和边缘计算的关系说清楚了 | 技术头条
查看>>