微服务架构~白话

微服务架构:



需要解决的问题:
1,这么多服务,客户端如何访问:
2,这么多服务,服务与服务之间如何通信:
3,这么多服务,如何管理:
4,这么多服务,挂了怎么办:



微服务架构=水疗会所:
服务消费者=你:
服务提供者=技师:
你这么联系技师?需要注册中心=会所:
如果没有注册中心?:
你就需要社交软件,例如,微信,你要一个一个手机号码留着,联系方式,姓名等个人信息你要存着,就很麻烦,还要维护关系:
有注册中心?:
消费者(你)并不用维护和提供者(技师)的关系,可以找注册中心(会所)找到提供者(技师):
缓存:
Redis 缓存穿透,缓存击穿,缓存雪崩:
什么是缓存?:
8号技师(key),去会所直接说我找8号就可以直接提供服务.:
什么是缓存穿透?:
数据库和缓存里都没有这个数据(你拿着8号技师去会所找她服务,她离职了,你去找会长,会长就去技师房问8号技师在不在?不在):
这就相当于穿透,拿着东西要服务的时候,没有key为8的值,就去数据库找,也没有.(又经过缓存又经过数据库),效率低:
什么是缓存击穿?:
例如,key很热门,属于爆款商品,就存到缓存,有可能有缓存失效时间,这笔数据失效的一瞬间,我就拿着id去缓存拿不到数据,就去数据取数据:
(会长以为8号在会所,实际去吃饭了,然后通知技师,本来刚刚是在的,会长跟你说在,你去了,突然8号去吃饭去了,要想8号提供服务,等她回来路上会花点时间):
什么是缓存雪崩?:
同一时间,集中式的key消失了(比如,我存10条数据,过期时间都是60秒,60秒一到,10条数据都失效了):
(你有8,9,10三个号码牌,你跟会长说"8号在不在?","不在","9号在不在?","不在","10号在不在?","也不在",这就是雪崩,要么跟你额外安排吧,这就是去数据库里查,要么把她从家里喊过来):
熔断机制:
警察来了,你去会所问会长,今天有什么服务啊,会长说"只有足疗",谁问都一样只有足疗,返回一个固定的结果,因为警察来了嘛,对不对:
高可用:
你去会所找8号技师,8号不在,还有9号,你可以找9号,9号不在找10号,这就高可用,一直可以用:
高性能:
通过训练,提高技师们的能力,进行优化:
高并发:
负载均衡,8号,9号技师轮流服务:

盖房子:
分布式,可以高可用:
一个人搬砖,一个人砌墙,一个人和泥,很多人干不同的事情:
集群,可以高可用:
十个人搬砖,十个人砌墙,十个人和泥,很多人干相同的事情:
高可用(集群,负载均衡,限流,降级,熔断):
十个人干活,病了一个人没来干活,剩下九个人依然可以继续工作下去,一台服务器挂掉了不影响服务运行:
可扩展:
十个人这个活干不完,需要再叫几个人来帮忙一起干:
负载均衡:
有十个人,第一个先干一会,然后第一个人歇着让第二个人再干依次...:
如果不做负载均衡,第一个人干活,其他九个人看着,第一个累死了,然后上第二个人,最后都累死了,工程也没干完...:
限流:
老板说就100台服务器,你还问我要服务器,不能干就滚蛋,这时候,你需要做限流:
比如高峰期,放一部分请求过去,大部分请求拦截,这就是限流:
限流的方案:秒杀:
限流的方案:zuul网关(比如一秒钟只放一万个请求,剩下的先做拦截:
做一个熔断,返回一个提示信息,比如提示"服务器繁忙,稍后再试!",两三秒之后没有那么繁忙了,就可以正常访问了):
高并发(分布式,静态技术,缓存技术,异步并发,池化,队列):
分布式集群:
很多台服务器,加服务器:
静态技术:
比如商品详情页,被人访问的特别多,我们就可以生产静态页面,保存到服务器端,下次访问就不用渲染,通过静态页面做响应:
缓存技术:
redis,缓存数据库,减少每次的请求访问时间,可能之前200毫秒,现在只需50毫秒,剩下更多的时间去处理更多的其他请求了:
异步并发:
rabbitmq,消息中间件,用户访问有波峰和波谷,波峰的时候,先返回默认数据,把消息发送到队列:
比如,你下个订单,我先让你下载成功,然后我紧跟着再去处理库存问题,生产订单,处理物流信息,先把消息放队列里面去:
到了波谷,比较空闲了,然后从队列中获取消息再进行处理:
池化:
例如使用Tomcat线程池:
队列:
例如异步并发的消息队列:
posted on 2019-06-20 16:00  陶攀峰  阅读(567)  评论(0编辑  收藏  举报

顶部 底部