当前位置: 首页 > 后端技术 > Java

理解微服务

时间:2023-04-01 19:01:50 Java

什么是微服务微服务是一种分布式架构。所谓分布式架构就是把服务拆分成小的服务,在拆分的过程中会出现各种各样的问题。比如SpringCloud等技术解决了服务拆分过程中出现的问题,比如服务治理等,SpringCloud没有解决的问题。需要其他技术解决方案。所以我觉得microservices=springCloud确实太小了。微服务技术栈/服务治理在构建微服务架构时,首先要做的就是拆分微服务。根据业务功能模块,将单体项目拆分成独立的项目,每个项目完成一部分服务,每个服务独立部署上线。拆分微服务后,一个业务动作需要通过多个服务的协作来完成,服务之间相互调用。随着业务越来越复杂,服务之间的调用关系会非常复杂,而这些复杂的调用需要专门的机制来完成调用之间的管理。比如服务A调用服务B,需要知道服务B的域名或者IP注册中心。注册中心记录了每个微服务的IP/域名和端口,以及服务的一些信息,比如这个服务可以做什么事情,当每个服务调用另一个服务时,拉取当前分布式集群可用的服务通过注册中心。有了注册中心,每个服务都有自己的配置,服务之间的服务也可能是一样的。维护每个服务的配置也比较繁琐。配置中心配置中心是统一管理整个集群的配置。微服务运行的时候,用户是可以访问的,但是那么多服务用户应该去访问哪个呢?因此,需要一个统一的入口服务网关。它不能随便访问任何服务(涉及认证),也不知道可以访问哪些服务。当有请求到来时,服务网关可以完成路由和负载均衡的功能。有了微服务,用户多了,数据库可能无法支持大量的访问,所以需要缓存组件。分布式缓存将数据库数据放在内存中,以便快速访问。用户请求先去缓存,没有缓存再去数据库。分布式搜索一个请求会来回调用多个服务,调用环节会比较长,调用时间也会比较长。全程需要使用异步调用。当消息队列请求过来时,直接将消息丢入消息队列。请求直接返回,其他订阅消息的服务执行。这增加了整个系统的吞吐量。对于复杂的调用,当出现问题时,排查问题就会变得困难,所以需要日志平台和链路跟踪。日志服务统计整个集群服务的运行日志,如输入参数、输出参数等异常信息,并统一存储和分析。SystemLinkTracking实时跟踪系统服务信息,如服务栈信息、内存占用、CPU负载等微服务部署CDJenkins-编译docker-构建镜像k8s-编码镜像的意思是服务治理+服务部署=微服务特性理解微服务单体architecture对于复杂的架构设计,比如订单模块,用户函数等,写函数的时候网上堆代码就够了。因此,它也具有架构简单、部署简单的优点。可以直接把单体架构打成一个包发给Tomcat。如果请求太多,可以直接添加机器。所以还有一点就是:部署的成本是最低的,但是它的劣势也非常大。业务越来越复杂,模块越来越多,全部放在一个项目中,意味着代码耦合度高,代码量大,所以代码编译打包非常效率低下。代码中有我,我中有你,开发中应该没有动态股票代码。分布式架构:按照业务模块拆分逻辑。拆分服务后,带来的是收益。减少代码耦合,不影响模块。有利于服务的升级和扩展。如果升级一个服务,只升级该服务,不涉及其他服务。在带来这个优势的同时,也带来了服务拆分带来的治理和部署问题。常见的问题包括:如何考虑服务拆分的粒度如何考虑服务集群地址如何维护服务如何实现服务之间的远程调用如何感知服务的健康状态微服务架构特点单一职责微服务拆分粒度更小,以及每个服务对应一个独特的业务能力,做到职责单一,避免业务重复开发。服务企业少,势力范围小。面向服务的微服务对外暴露业务接口,每个服务对外暴露调用方法供其他服务调用。Autonomous每个服务都是独立的,它使用的技术和部署方式,包括数据库,都可以独立于其他服务。团队独立,符合敏捷开发。服务间隔离服务需要隔离,容错,降级,避免级联问题(一个问题影响大面积)SpringCloud阿里巴巴,国内比较知名的微服务技术,兼容SpringCloud和Dubbo。小结本文完成微服务总结一下,微服务分为两部分:内容服务治理服务持续发布微服务和单体优缺点当前国内流行的技术推荐:内容和素材来源于黑马程序员培训课程资源,非常不错的精品课程。