当前位置: 首页 > 科技观察

超完备微服务设计选型参考

时间:2023-03-20 21:37:57 科技观察

微服务架构模式的核心包括以下几个部分:微服务之间的RPC通信。JavaChassis提供了非常高效的通信方式,支持多协议扩展,比如最快的REST通信方式实现,异步二进制通信方式HIGHWAY。分布式微服务实例和服务发现。结合ServiceComb服务中心,可以实现分布式、多集群的服务发现能力,以及强大的微服务元数据管理能力。配置外部、动态和集中配置管理。可使用ServiceCombKie、华为云配置中心、Nacos、Apollo等配置中心,并全面集成SpringBoot配置管理能力。分布式故障管理、服务容错、隔离、熔断。内置故障实例隔离、故障重试、耗时接口隔离等重要的分布式故障处理能力。你可以选择使用Hystrix的容错、隔离、熔断能力,只需要做简单的配置。分布式日志跟踪。提供开放跟踪支持。此外,还有性能监控、日志系统、健康检查等。JavaChassis采用优雅的设计模式实现了上述所有核心组件的功能,并使这些功能开箱即用。使用JavaChassis,开发者可以更专注于业务功能开发,快速构建可商用的微服务应用。JavaChassis的软件工程实践JavaChassis在设计时,不仅考虑了如何更好地利用微服务架构模型,还融合了优秀的软件工程思想,帮助开发者更好地管理信息资产,提高软件工程管理水平。能力。下图简要描述了“以合约为中心”的核心概念。可以通过Invocation获取JavaChassis的合约等源数据信息,Invocation是JavaChassis的核心对象。JavaChassis的运行时架构为了支持软件工程实践,JavaChassis的运行时架构是一个哑铃结构,两端是“编程模型”和“通信模型”,中间是“运行模型”。“编程模型”面向开发者编写服务接口的习惯,“通信模型”面向微服务之间的高效编码和通信,“运行模型”基于“契约”,提供服务无关的插件使Developer独立于业务实现开发治理功能的机制,可以灵活的移除和添加功能,调整这些治理功能的处理顺序。“运行模型”的核心抽象接口是Handler。这个接口是一个异步定义。JavaChassis运行时模型采用纯异步实现,使得整个系统运行起来非常高效。JavaChassis微服务应用架构有很多优秀的微服务应用架构实践。微服务应用架构要充分考虑系统的灵活性,能够针对系统性能瓶颈进行扩容。需要考虑应用系统内部微服务拆分的灵活性,针对业务变化及时做出调整。下图显示了一个典型的应用架构。接入层使用一些网络基础设施,如DNS、浮动IP等,方便用户使用统一的URL访问系统,或者使用API??网关等基础设施,实现系统的能力开放。业务层包括应用网关,完成认证、审计等功能,通过认证的请求由应用网关转发到微服务系统内部。JavaChassis微服务技术选型Java语言拥有庞大的技术体系和标准,广泛应用于业务系统的方方面面。与JavaChassis密切相关的技术包括JSP/Servlet标准和容器、Spring和SpringBoot技术,以及SpringBoot提供的REST开发框架SpringMVC。JavaChassis和JSP/Servlet标准JavaChassis不依赖于JSP/Servlet标准,可以基于Vert.xHTTP实现,提供非常轻量和高效的REST服务。在对性能要求较高的核心业务场景中,使用这种轻量化技术是再合适不过的了。在这种场景下,并没有完整实现JSP/Servlet相关的接口,比如HttpServletRequest、HttpServletResponse等。servicecomb-samples(https://github.com/apache/servicecomb-samples/tree/master/porter_lightweight)提供了使用这种部署模式的完整示例。JavaChassis可以在JSP/Servlet容器中部署和运行。在这个场景中,JavaChassis的核心组件是一个Servlet,它实现了JavaChassis的核心RPC系统。使用JSP/Servlet容器运行JavaChassis,业务请求首先通过容器的HTTP实现,然后通过Filter,进入JavaChassis的RestServlet,运行JavaChassis的运行时模型(Handlers),并进入业务界面进行处理。JavaChassis和Spring,SpringBootJavaChassis目前依赖于Spring,但设计为独立于Spring运行。Spring是一个应用广泛的技术,非常轻量级,JavaChassis中可以直接使用Spring相关的技术。JavaChassis不依赖于SpringBoot,但JavaChassis可以在SpringBoot的基础上运行。SpringBoot2还提供了多种运行环境支持,WebApplicationType.NONE、WebApplicationType.SERVLET、WebApplicationType.REACTIVE,JavaChassis可以集成NONE、SERVLET两种模式。以NONE方式集成JavaChassis和SpringBoot自带的REACTIVE很相似,但是比SpringBoot的REACTIVE更高效,并且支持早期的RestTemplateAPI和RPCAPI来访问服务。SpringMVCJavaChassis继承了SpringMVC的接口设计,提供了Provider和Consumer级别的API接口来定义REST接口和访问REST接口。但需要注意的是,两者是完全不同的实现,实现机制也不同。SpringBoot主要基于Servlet,实现MVC模式。不仅可以开发REST接口,还可以开发其他HTTP功能,如重定向、返回HTML页面等,还可以通过@ExceptionHandler、@ControllerAdvice等异常处理机制拦截Servlet请求。JavaChassis只是实现了REST服务的定义和调用,在异常处理机制和请求拦截机制上有所不同。JavaChassis和SpringCloudJavaChassis和SpringCloud都实现了微服务架构模式。相比之下,JavaChassis是一个更紧凑的实现,开箱即用,而SpringCloud是一个相对松散的实现,集成了大量的Hystrix组件。微服务架构模式关注微服务的设计和微服务之间的设计,以及微服务与微服务基础设施之间的关系。JavaChassis微服务基础设施包括服务注册与发现、服务配置管理、灰度发布、合约管理等功能。SpringCloud可以使用spring-cloud-huawei(https://github.com/huaweicloud/spring-cloud-huawei)来使用JavaChassis相关的微服务基础设施。