欢迎关注掘金:【Ccww】,一块儿学习
提高能力,涨薪可待
面试知识,工做可待
实战演练,拒绝996
也欢迎关注微信公众号【Ccww笔记】,原创技术文章第一时间推出
若是此文对你有帮助、喜欢的话,那就点个赞呗!面试
是否是感受在工做上难于晋升了呢?
是否是感受找工做面试是那么难呢?
是否是感受本身天天都在996加班呢?redis
在工做上必须保持学习的能力,这样才能在工做获得更好的晋升,涨薪指日可待,欢迎一块儿学习【提高能力,涨薪可待】系列spring
在找工做面试应在学习的基础进行总结面试知识点,工做也指日可待,欢迎一块儿学习【面试知识,工做可待】系列mongodb
最后,理论知识到准备充足,是否是该躬行起来呢?欢迎一块儿学习【实战演练,拒绝996】系列数据库
使用微服务架构能够为咱们带了好处、便利的同时,但也带了不少挑战,新的问题。好比,微服务之间的调用和调用和通讯会不会很复杂? 通信模式,一对一仍是一对多的?依赖的服务没有准备好,如何验证个人开发功能?数据一致性的问题等等。 总结起来:后端
为了解决这些问题,咱们在设计微服务架构时,必须进行全盘考虑,权衡利弊,这样才能作出合理的抉择,达到最佳的效果,从而达到咱们复杂系统微服务拆分的最终目的。接下来咱们来讨论讨论设计思想。缓存
微服务架构设计首要任务根据给定的因素粗粒度将业务功能合理的划分微服务。每一个公司每一个复杂系统业务划分区域都不一样,但均可以基于这两种方式建立微服务:安全
基于分布式的高性能、高并发的设计,结合Rest API微服务和Web UI微服务能够构建一个适应任何规模访问的多维的稳定牢固,且扩展性良好的系统平台。性能优化
在微服务设计中,微服务治理能力是相当重要的,甚至一个微服务系统好坏,取决微服务治理能力。可使用治理组件和服务来管理统筹庞大分布式系统,确保系统处于有序不乱、稳定而高效。服务器
这里只提供Spring Cloud基础组件(选择治理组件应该基于公司的状况而定),包括:
这些组件是如何进行微服务治理的呢?主要过程以下图:
Rest API微服务实现功能:
Rest API微服务主要是关于涉及数据库,其中,数据管理基于数据库实现数据持久化。接口开发根据Restful规范使用GET、POST、PUT、DELETE对数据进行CRUD操做。
但最重要的如何设计Rest API微服务,其性能将对整个系统的性能相当重要,起决定性做用。这边提供一下方案:
使用数据库集群和分组提供数据库访问性能:
数据库中间件实现读写分离
使用数据缓存也是能够提搞数据存取性能,可以使用Redis等高性能的NoSQL数据库。但为了提供缓存的命中率,需遵照:
保持Rest API微服务的独立性,禁止在Rest API微服务中之间进行互相调用。
基于Rest API微服务先后端分离的垂直划分-Web UI微服务包括两个功能:
在设计Web UI微服务主要考虑是高并发的问题,能够经过如下方法来实现高并发:
在Rest API微服务,使用FeignClient实现负载均衡调用。FeignClient自动实现了Zuul动态路由和Ribbon负载均衡服务
使用Hystrix组件实现断路器的设计,提供对服务访问容错设计和降级使用机制。
使用非阻塞的异步调用实现高并发
使用分布式文件系统,将图片、视频等资料独立一个分布式文件系统管理。好比,FastDFS。
为了保证各个微服务的独立性,并减小通讯的复杂性,提升微服务之间的调用效率,咱们对微服务之间的调用,遵循以下规定:
对于微服务的多服务架构数据需确保数据一致性,能够基于CAP原理的BASE理论来合理设计。具体实现操做:
CAP(Consistency,Availability,Partition tolerance)即一致性、可用性、分区容错性三者不可兼得
BASE(Basically Avaiable,Soft state,Eventually consistent)即基本可用、软状态、最终一致性。BASE是对CAP中一致性和可用性进行权衡的结果
经过微服务的治理环境,每一个微服务能够多副本发布在同一个局域网之中,或者跨区域、跨机房分布等搭建成一个稳定可靠并可持续扩展的系统平台。以下图:
安全设计方面,能够包括:
防火墙设计是系统安全的第一道屏障,可使用防火墙为微服务架构的服务器提供一个安全可靠的分布式环境,以下图:
欢迎关注微信公众号【Ccww笔记】,原创技术文章第一时间推出。