本文共 2180 字,大约阅读时间需要 7 分钟。
优点
缺点
微服务的优点就是单体应用的缺点,微服务的缺点就是单体应用的优点。
拆分原则:一个模块不依赖或极少依赖其它模块,但需要给多个模块(2个及以上)提供数据。
设计原则
每个服务都是独立的,单独进行开发、测试、部署。
dubbo:zookeeper + dubbo + springmvc/springboot
通信方式:rpc 注册中心:zookeper/redis/nacos 配置中心:diamond、nacosSpringCloud:全家桶+轻松嵌入第三方组件(Netflix 奈飞)
通信方式:http restful 注册中心:eruka 配置中心:config 断路器:hystrix 网关:zuul/gateway 分布式追踪系统:sleuth+zipkinSpring Alibaba Cloud:全家桶+阿里生态多个组件组合+SpringCloud支持
通信方式:http restful 注册中心:nacos 配置中心:nacos 断路器:sentinel 网关:gateway 分布式追踪系统:sleuth+zipkinspringcloud alibaba是springcloud的子项目,常搭配spingcloud的其它组件使用,springcloud alibaba不用自己编写注册中心、配置中心,简化了开发,并且提供可视化界面便于操作。
怎么调用服务
Dubbo
SpringCloud
与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/