总体发展概况服务架构在不断演进,我们也在不断调整以适应自己的业务。整体开发流程如下:从开发者的角度,作为java开发者,经历了以下几个过程:第一阶段:单体架构的早期,大部分IT系统都是单体系统,比如传统的SSH架构.同时前后端不分离,UI组件也包含在控制层:这是老马刚毕业时的架构,SSH基本是面试必考的。但是现在这些都发生了一些变化,主流变成了springmvc+springcontaienr+mybatis。只能说spring是java界永恒的春天!第二阶段:分布式架构为了便于系统的扩展,增加系统的复用性,出现了分布式系统。另一方面,系统模块正在快速扩展。为了降低系统内部的复杂性,将系统模块进行拆解,使其不能划分到不同的系统中,减少模块耦合,加快迭代速度。ps:其实主要是为了降低单个应用的复杂度,让每个应用专注做一件事。这样可以大大降低维护成本。也就是说,开发完成后,可以请一个刚毕业的新人来做运维。减少开发人员并降低成本。主流的主要是SOA和MSA两个系统。SOA早期的分布式系统是基于面向服务的架构SOA。SOA是微服务的前身,主要是为了摆脱单体应用的问题,达到以下效果:充分利用现有的基础设施;SOA架构依赖于消息传递(AMQP、MSMQ)和SOAP作为主要的远程访问协议。快速响应业务变化;架构图如下:异构系统之间也可以通过消息中间件的协议转换实现相互调用。我接触这个有一段时间了。当时业务系统是用C#开发的,而我所在的后台服务是用java技术开发的。当时的协议使用的是webservice。但是使用起来不是很顺畅,主要缺点如下:(1)WebService中常用的SOAP通信协议,通常使用XML格式进行通信,数据冗余,协议过于繁重(2)服务治理是不完美。后来逐渐演变为现在的MSA(Micro-ServiceArchitecture微服务架构),从而实现了一个更松散耦合、更灵活的系统。MSA微服务是一种软件开发技术——面向服务的架构(SOA)架构风格的一种变体,它将应用程序构建为一组松散耦合的服务。在微服务架构中,服务是细粒度的,协议是轻量级的。微服务架构的图表优势微服务架构有许多重要的优势。首先,它解决了复杂性问题。它将单体应用程序分解为一组服务。虽然功能总量保持不变,但应用程序已分解为可管理的模块或服务。这些服务定义了明确的RPC或消息驱动的API边界。微服务架构强制执行一定程度的应用程序模块化,这是单体代码库难以实现的。因此,微服务的开发速度要快得多,也更容易理解和维护。第三,微服务架构使得每个微服务都可以独立部署。最后,微服务架构使每个服务都可以独立扩展。现在这种架构模式已经成为主流。我感受最深的是,如果只负责单个服务,理解起来更透彻,维护起来也没有那么复杂。如果有功能变化,只能启动相应的应用程序。缺点微服务的一些想法在实践中很好,但在作为一个整体实施时也呈现出它们的复杂性。增加的运维开销和成本必须有扎实的DevOps开发运维集成能力隐式接口和接口匹配问题代码重复分布式系统复杂异步机制可测性的挑战个人认为微服务最大的问题就是拆解后的系统拆分,一个人很难了解系统的全貌,所以定位问题就变得很复杂。比如一笔交易失败,你可能要从API网关=》业务系统=》交易核心=》支付核心=》风控系统去寻找原因,最后发现是返回了消息给底层系统Failure,这里涉及到多个系统的通信成本,基本上半天就没了。SOAvsmicroservicechallenges微服务的挑战可以概括为:APIGateway服务间调用服务发现服务容错服务部署数据调用幸运的是,很多成熟的中间件已经为我们解决了这些问题。第一代微服务框架Dubbo的架构Dubbo的架构是这样的:dubbo在rpc方面做得很好,仅此而已。但为什么它仍然如此受欢迎?很多架构升级都会有历史包袱,除非你是一家新公司,一个全新的应用。大多数应用都是基于spring或者springboot的,所以现在大部分公司都是采用springboot+dubbo的技术选型方案,可以让架构顺利迁移。如果你的公司是全新的技术选型,可以考虑springcloud。SpringCloud架构你会发现SpringCloud可以说是java技术栈中比较完整的微服务框架。当然,spring再好,负责的语句周期也只是在jvm内部,应用的部署运维也需要考虑。每种技术都有其优点和局限性,因此需要结合使用。推荐阅读:MicroserviceArchitecturesWithSpringCloudandDocker目前docker虚拟化技术如火如荼,结合k8s掌托。我选择称呼这个盛世,喝不起咖啡的打工仔,在春天的货船上,996块搬砖!下一代微服务:服务网格?ServiceMesh也是目前比较流行的技术,后面会详细讲解。个人感知技术架构的演化类似于生物的演化、物竞天择和适者生存。学习技术不应该局限于当下。你必须学会??回顾技术的历史,知道为什么会这样。如果你有能力,你也可以引领科技的未来。为什么不?我觉得很幸运。最早接触到Singleapplication是springxml配置的时代。感觉很倒霉,框架层出不穷,技术日新月异。如果不继续学习,5年内就会被彻底淘汰。为了不那么快被淘汰,本系列将从微服务的发展历程、理论知识、入门使用、实际应用、实现原理、反复造轮子逐步了解微服务。
