标签:发展 lin 技术 1.2 房产 link 算法 微服务 面向
代表:Dubbo(Java)、Orleans(.Net)等
特点:和语言绑定紧密
代表:Spring Cloud等
现状:适合混合式开发(例如借助Steeltoe OSS可以让ASP.Net Core与Spring Cloud集成),正值当年
代表:Service Mesh(服务网格) => 例如Service Fabric、lstio、Linkerd、Conduit等
现状:在快速发展中,更新迭代比较快
基础的云平台为微服务提供了资源能力(计算、存储和网络等),容器作为最小工作单元被Kubernetes调度和编排,Service Mesh(服务网格)管理微服务的服务通信,最后通过API Gateway向外暴露微服务的业务接口。
目前,我所在的项目组已经在采用这种技术架构了,服务网格采用的是Linkerd,容器编排采用的是K8S,Spring Cloud已经没用了。But,不代表Spring Cloud没有学习的意义,对于中小型项目团队,Spring Cloud仍然是快速首选。
首先,尽管Spring Cloud带有“Cloud”这个单词,但它并不是云计算解决方案,而是在Spring Boot基础之上构建的,用于快速构建分布式系统的通用模式的工具集。
其次,使用Spring Cloud开发的应用程序非常适合在Docker和PaaS(比如Pivotal Cloud Foundry)上部署,所以又叫做云原生应用(Cloud Native Application)。云原生可以简单地理解为面向云环境的软件架构。
总结 :Spring Cloud是一个基于Spring Boot实现的云原生应用开发工具,它为基于JVM的云原生应用开发中涉及的配置管理、服务发现、熔断器、智能路由、微代理、控制总线、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
Spring Cloud具有如下特点:
Spring Cloud作为第二代微服务的代表性框架,已经在国内众多大中小型的公司有实际应用案例。许多公司的业务线全部拥抱Spring Cloud,部分公司选择部分拥抱Spring Cloud。例如,拍拍贷资深架构师杨波老师就根据自己的实际经验以及对Spring Cloud的深入调研,并结合国内一线互联网大厂的开源项目应用实践结果,认为Spring Cloud技术栈中的有些组件离生产级开发尚有一定距离,最后提出了一个可供中小团队参考的微服务架构技术栈,又被称为“中国特色的微服务架构技术栈1.0”:
上图中涉及到的组件,这里不做具体介绍,有兴趣的童鞋可以浏览波波老师的这篇文章:《一个可供中小团队参考的微服务架构技术栈》。
备注:下面资料都是我们项目组新同事以及老同事(.Net技术背景)所采用的学习资料,并不保证适合于所有人。本示例主要也主要是基于下面的资料而写的sample code。
(1)周立:《Spring Cloud与Docker 微服务架构实战》
(2)程序猿DD:《Spring Cloud 微服务实战》、《Spring Cloud基础教程(Dalston版本)(强力推荐)》
(3)纯洁的微笑,《Spring Cloud系列文章》
示例地址:https://github.com/EdisonChou/EDC.SpringCloud.Samples
此部分示例位于:part1_service-register-discovery
此部分示例主要演示了如何基于Eureka实现服务的注册与发现,其中包括两个版本:
① 单节点版本 (开发环境调试用) => 位于eureka-service-sn (sn代表single node)项目内
这里需要注意的地方是:在开发环境需要关闭Eureka的自我保护机制,不然你无法轻易看到服务移除的效果,需要在application.yml中如下设置:
eureka: server: enableSelfPreservation: false # 本地调试环境下关闭自我保护机制
这是因为Eureka考虑到生产环境中可能存在的网络分区故障,会导致微服务与Eureka Server之间无法正常通信。它的架构哲学是宁可同时保留所有微服务(健康的微服务和不健康的微服务都会保留),也不盲目注销任何健康的微服务。
关于自我保护机制,更多内容可以参考:《Spring Cloud Eureka全解之自我保护机制》
② HA多节点版本 (部署/生产环境用) => 位于eureka-service-ha-1 & eureka-service-ha-2这两个项目内
此版本需要注意的是两个节点的application.yml保持一致,但由于其中使用了peer1和peer2的hostname,在本地开发环境需要给Windows(我假设你使用的是Windows系统)设置hosts文件如下:
127.0.0.1 peer1 peer2
扩展:除了Eureka之外,还可以选择通用型较强的Consul,关于Consul的基本概念与服务端的安装配置可以看看我的这一篇《.Net Core微服务之基于Consul实现服务注册于发现》了解一下。最后,不得不说,Spring Boot 和 Spring Cloud中核心组件封装的注解真的是太强大了,很多操作一个注解直接搞定,无须过多的coding。
此部分示例位于:part2_client-load-balance
此部分示例主要演示了如何基于Ribbon实现客户端的负载均衡,建议启动方式:先启动Eureka,再启动UserService和MovieService。通过访问MovieService的API接口 /log-instance 进行日志查看,测试结果如下图所示:
从上图可以看出,通过客户端的负载均衡算法,依次访问了不同的服务节点。
此部分示例位于:part3_feign
此部分示例主要演示了基于Feign如何实现声明式调用,包括以下内容:
(1)基本整合Feign进行单参数与多参数的请求:位于movie-service这个项目内
需要注意的就是别忘了在启动类加上@EnableFeignClients注解
Spring Cloud微服务架构实现+Guava缓存+redis+数据库设计+微服务原理改造房产销售
标签:发展 lin 技术 1.2 房产 link 算法 微服务 面向
原文地址:https://www.cnblogs.com/java168/p/10009033.html