来源:哪吒编程 大家好,没用面试我是过微丐版官哪吒。 很多人都说现在是服务云原生、大模型的别慌时代,微服务已经过时了,架构但现实的图让是,很多人开发多年,轻松都没有在实际的拿捏开发中用过微服务,更别提搭建微服务框架和技术选型了。没用面试 面试的过微丐版官时候都会问,怎么办?服务 今天分享一张微服务的丐版架构图,让你可以和面试官掰扯掰扯~ 脑中有图,别慌口若悬河,架构一套组合拳下来,图让面试官只能拍案叫好,轻松大呼快哉,HR更是惊呼,我勒个乖乖,完全听不懂。 话不多说,直接上图。 由此可见,Spring Cloud微服务架构是由多个组件一起组成的,网站模板各个组件的交互流程如下。 浏览器通过查询DNS服务器,获取可用的服务实例的网络位置信息,从而实现服务的自动发现和动态更新; 通过CDN获取静态资源,提高访问速度,解决跨地域请求速度慢的问题; 通过LVS负载均衡器,实现负载均衡和网络协议; 通过Nginx反向代理服务器,将请求转发到gateway做路由转发和安全验证; 访问注册中心和配置中心Nacos,获取后端服务和配置项; 通过Sentinel进行限流; 通过Redis进行缓存服务、会话管理、分布式锁控制; 通过Elasticsearch进行全文搜索,存储日志,配合Kibana,对ES中的数据进行实时的可视化分析。 在微服务中,域名系统DNS的作用主要是进行服务发现和负载均衡。 LVS是一个开源的负载均衡软件,基于Linux操作系统实现。它在Linux内核中实现负载均衡的功能,通过运行在用户空间的用户进程实现负载均衡的策略。 CDN静态资源图片、视频、JavaScript文件、CSS文件、静态HTML文件等。这些静态资源的特点是读请求量极大,对访问速度的要求很高,并占据了很高的宽带。如果处理不当,可能导致访问速度慢,宽带被占满,进而影响动态请求的处理。 CDN的作用是将这些静态资源分发到多个地理位置的机房的服务器上。让用户就近选择访问,提高访问速度,解决跨地域请求速度慢的问题。 在选择Nginx静态资源服务和CDN静态资源服务时,可以根据以下几个因素进行权衡和选择: 选择Nginx静态资源服务还是CDN静态资源服务取决于具体的需求和场景。如果追求更好的性能和全球覆盖,可以选择CDN静态资源服务;如果更需要控制和自定义能力,且对性能要求不是特别高,可以选择Nginx静态资源服务。 在微服务架构中,Gateway的作用如下: 在微服务架构中,Nacos的作用主要体现在注册中心、配置中心、服务健康检查等方面。 竞态条件是指在同一个程序的多线程访问同一个资源的情况下,如果对资源的访问顺序敏感,就存在竞态条件。竞态条件可能会导致执行结果出现各种问题,例如计算机死机、出现非法操作提示并结束程序、错误的读取旧的数据或错误的写入新数据。在串行的内存和存储访问能防止这种情况,当读写命令同时发生的时候,默认是先执行读操作的。 竞态条件也可能在网络中出现,当两个用户同时试图访问同一个可用信道的时候就会发生,系统同意访问之前没有计算机能得到信道被占用的提示。统计上说这种情况通常是发生在有相当长的延迟时间的网络里,比如使用地球同步卫星。 为了防止这种竞态条件发生,需要制定优先级列表,比如用户的用户名在字母表里排列靠前可以得到相对较高的优先级。黑客可以利用竞态条件这一弱点来赢得非法访问网络的权利。 竞态条件是由于多个线程或多个进程同时访问共享资源而引发的问题,它可能会导致不可预测的结果和不一致的状态。解决竞态条件的方法包括使用锁、同步机制、优先级列表等。 Redis会话管理的一般实现步骤: 在微服务架构中,Elasticsearch全文搜索引擎的应用主要体现在如下几个方面:一、域名系统DNS
二、LVS(Linux Virtual Server),Linux虚拟服务器
三、CDN静态资源
四、Nginx反向代理服务器
1、Nginx的主要作用体现在以下几个方面:
反向代理,Nginx可以作为反向代理服务器,接收来自客户端的请求,然后将请求转发到后端的微服务实例。负载均衡,Nginx可以根据配置,将请求分发到微服务不同的实例上,实现负载均衡。服务路由,Nginx可以根据不同的路径规则,将请求路由到不同的微服务上。静态资源服务,Nginx可以提供静态资源服务,如图片、视频、JavaScript文件、CSS文件、HTML静态文件等,减轻后端服务的压力,提高系统的响应速度和性能。2、Nginx静态资源服务和CDN静态资源服务,如何选择?
五、Gateway网关
六、注册中心Nacos
七、Redis缓存
1、在微服务架构中,Redis的作用主要体现在以下几个方面:
缓存服务:Redis可以作为高速缓存服务器,将常用的数据存储在内存中,提高数据访问速度和响应时间,减轻数据库的访问压力,并加速后台数据的查询;会话管理:Redis可以存储会话信息,并实现分布式会话管理。这使会话信息可以在多个服务之间共享和访问,提供一致的用户体验;分布式锁:Redis提供了分布式锁机制,可以确保微服务中多个节点对共享资源的访问的合理性和有序性,避免竞态条件和资源冲突;消息队列:Redis支持发布订阅模式和消息队列模式,可以作为消息中间件使用。微服务之间可以通过Redis实现异步通信,实现解耦和高可用性;2、竞态条件
3、Redis会话管理如何实现?
八、Elasticsearch全文搜索引擎
九、感觉Redis和Elasticsearch很像?微服务中Redis和Elasticsearch的区别
数据存储和查询方式:Redis是一种基于键值对的存储系统,它提供高性能的读写操作,适用于存储结构简单、查询条件同样简单的应用场景。而Elasticsearch是一个分布式搜索和分析引擎,适用于全文搜索、数据分析等复杂场景,能够处理更复杂的查询需求;数据结构与处理能力:Redis支持丰富的数据结构,如字符串、哈希、列表、集合等,并提供了原子性的操作,适用于实现缓存、消息队列、计数器等功能。而Elasticsearch则是基于倒排索引的数据结构,提供了强大的搜索和分析能力。但相对于Redis,Elasticsearch的写入效率较低;实时性和一致性:Redis提供了很高的实时性,Redis将数据存储到内存中,能够很快的进行读写操作;而Elasticsearch是一个近实时的搜索平台,实时性不如Redis;扩展性:Redis是通过增加Redis实例的形式实现扩展,对非常大的数据集可能要进行数据分片;而Elasticsearch具有水平扩展的能力,可以通过添加更多的节点来提高系统的处理能力,适用于大量数据的场景;