哪些行业做网站最重要网站备案号在哪儿查询
哪些行业做网站最重要,网站备案号在哪儿查询,wordpress 蓝色企业主题,wordpress批量下载外链图片1. 系统架构的演变 俗话说#xff0c; 没有最好的架构#xff0c;只有最合适的架构。 微服务架构也是随着信息产业的发展而出现的最有普 遍适用性的一套架构模式。通常来说#xff0c;我们认为架构发展历史经历了这样一个过程#xff1a;单体架构—— 垂直架构 —— 没有最好的架构只有最合适的架构。 微服务架构也是随着信息产业的发展而出现的最有普 遍适用性的一套架构模式。通常来说我们认为架构发展历史经历了这样一个过程单体架构—— 垂直架构 —— SOA 面向服务架构 —— 微服务架构。 1.1 单体架构 互联网早期一般的网站应用流量较小只需一个应用将所有功能代码都部署在一起就可以这样 可以减少开发、部署和维护的成本。比如说一个电商系统里面会包含很多用户管理商品管理订 单管理物流管理等等很多模块我们会把它们做成一个web项目然后部署到一台tomcat服务器上 很多传统互联网公司或者创业型公司早期基本都会采用这样的架构因为这样的架构足够简单能够 快速开发和上线。而且对于项目初期用户量不大的情况这样的架构足以支撑业务的正常运行。 优点 项目架构简单小型项目的话 开发成本低 项目部署在一个节点上 维护方便 缺点 全部功能集成在一个工程中对于大型项目来讲不易开发和维护 项目模块之间紧密耦合单点容错率低 无法针对不同模块进行针对性优化和水平扩展 1.2 垂直架构 随着用户量越来越大网站的访问量不断增大导致后端服务器的负载越来越高。 用户量大了产品 需要满足不同用户的需求来留住用户使得业务场景越来越多并且越来越复杂。 我们可以从两个方面进行优化 通过横向增加服务器把单台机器变成多台机器的集群。 按照业务的垂直领域进行拆分减少业务的耦合度以及降低单个war包带来的伸缩性困难问题。 优点 系统拆分实现了流量分担可以针对不同模块进行优化 方便水平扩展负载均衡容错率提高 系统间相互独立互不影响新的业务迭代时更加高效 缺点 服务之间相互调用如果某个服务的端口或者IP地址发生改变。调用的系统得手动变化 服务之间调用方式不统一基于httpclient,webservice接口协议不统一 搭建集群之后实现负载均衡比较复杂。比如内网负载在迁移得时候会影响调用方的路由导致线上故障 服务监控不到位 1.3 SOA架构 为了让大家更好地理解SOA我们来看两个场景 • 假设一个用户执行下单操作系统的处理逻辑是先去库存子系统检查商品的库存只有在库存足够的 情况下才会提交订单那么这个检查库存的逻辑是放在订单子系统中还是库存子系统中呢在整个系 统中一定会存在非常多类似的共享业务的场景这些业务场景的逻辑肯定会被重复创建从而产生 非常多冗余的业务代码这些冗余代码的维护成本会随着时间的推移越来越高能不能够把这些共享 业务逻辑抽离出来形成可重用的服务呢 • 在一个集团公司下有很多子公司每个子公司都有自己的业务模式和信息沉淀各个子公司之间不进 行交互和共享。这个时候每个子公司虽然能够创造一定的价值但是由于各个子公司之间信息不是互 联互通的彼此之间形成了信息孤岛使得价值无法最大化。 基于这些问题就引入了 SOAService-Oriented Architecture也就是面向服务的架构 。在SOA 中会采用ESB企业服务总线来作为系统和服务之间的通信桥梁ESB本身还提供服务地址的管 理、不同系统之间的协议转化和数据格式转化等。调用端不需要关心目标服务的位置从而使得服务 之间的交互是动态的这样做的好处是实现了服务的调用者和服务的提供者之间的高度解耦。 总的来说SOA主要解决的问题是 信息孤岛 共享业务的重用 优点: 使用治理中心ESB解决了服务间调用关系的自动调节 缺点: 服务间会有依赖关系一旦某个环节出错会影响较大( 服务雪崩 ) 服务关系复杂运维、测试部署困难 1.4 微服务架构 微服务架构在某种程度上是面向服务的架构SOA继续发展的下一步它更加强调服务的彻底拆分。 面向服务SOA和微服务本质上都是服务化思想的一种体现。如果SOA是面向服务开发思想的雏形那么微服务就是针对可重用业务服务的更进一步优化我们可以把SOA看成微服务的超集也就 是多个微服务可以组成一个SOA服务。伴随着服务粒度的细化会导致原本10个服务可能拆分成了 100个微服务一旦服务规模扩大就意味着服务的构建、发布、运维的复杂度也会成倍增加所以实施 微服务的前提是软件交付链路及基础设施的成熟化。 由于SOA和微服务两者的关注点不一样造成了这两者有非常大的区别 1. SOA关注的是服务的重用性及解决信息孤岛问题。 2. 微服务关注的是解耦虽然解耦和可重用性从特定的角度来看是一样的但本质上是有区别的解耦是降低业务 之间的耦合度而重用性关注的是服务的复用。 3. 微服务会更多地关注在DevOps的持续交付上因为服务粒度细化之后使得开发运维变得更加重要因此微服务 与容器化技术的结合更加紧密。 微服务架构就是将每个具体的业务服务构成可独立运行的微服务每个微服务只关注某个特定的功 能服务之间采用轻量级通信机制REST API进行通信。 英文: https://martinfowler.com/articles/microservices.html https://microservices.io/patterns/microservices.html 中文: http://blog.cuicc.com/blog/2015/07/22/microservices 优点 复杂度可控通过对共享业务服务更细粒度的拆分一个服务只需要关注一个特定的业务领域并通过定义良好 的接口清晰表述服务边界。由于体积小、复杂度低开发、维护会更加简单。 技术选型更灵活每个微服务都由不同的团队来维护所以可以结合业务特性自由选择技术栈。 可扩展性更强可以根据每个微服务的性能要求和业务特点来对服务进行灵活扩展比如通过增加单个服务的集 群规模提升部署了该服务的节点的硬件配置。 独立部署由于每个微服务都是一个独立运行的进程所以可以实现独立部署。当某个微服务发生变更时不需要 重新编译部署整个应用并且单个微服务的代码量比较小使得发布更加高效。 容错性在微服务架构中如果某一个服务发生故障我们可以使故障隔离在单个服务中。其他服务可以通过重 试、降级等机制来实现应用层面的容错。 缺点 微服务架构不是银弹它并不能解决所有的架构问题。 在拥抱微服务架构的过程中我们经常会遇到 数据库的拆分、API交互、大量的微服务开发和维护、运维等问题。即便成功实现了微服务的主体也 还是会面临下面这样一些挑战。 故障排查一次请求可能会经历多个不同的微服务的多次交互交互的链路可能会比较长每个微服务会产生自 己的日志在这种情况下如果出现一个故障开发人员定位问题的根源会比较困难。 服务监控在一个单体架构中很容易实现服务的监控因为所有的功能都在一个服务中。在微服务架构中服务 监控开销会非常大可以想象一下在几百个微服务组成的架构中我们不仅要对整个链路进行监控还需要对 每一个微服务都实现一套类似单体架构的监控。 分布式架构的复杂性微服务本身构建的是一个分布式系统分布式系统涉及服务之间的远程通信而网络通信 中网络的延迟和网络故障是无法避免的从而增加了应用程序的复杂度。 服务依赖微服务数量增加之后各个服务之间会存在更多的依赖关系使得系统整体更为复杂。假设你在完成 一个案例需要修改服务A、B、C而A依赖BB依赖C。在单体式应用中你只需要改变相关模块整合变 化再部署就好了。对比之下微服务架构模式就需要考虑相关改变对不同服务的影响。比如你需要更新服务 C然后是B最后才是A幸运的是许多改变一般只影响一个服务需要协调多服务的改变很少。 运维成本在微服务中需要保证几百个微服务的正常运行对于运维的挑战是巨大的。比如单个服务流量激增 时如何快速扩容、服务拆分之后导致故障点增多如何处理、如何快速部署和统一管理众多的服务等。 2. 如何实现微服务架构 2.1 微服务架构下的技术挑战 微服务架构主要的目的是实现业务服务的解耦。随着公司业务的高速发展微服务组件会越来越多 导致服务与服务之间的调用关系越来越复杂。同时服务与服务之间的远程通信也会因为网络通信问 题的存在变得更加复杂比如需要考虑重试、容错、降级等情况。那么这个时候就需要进行服务治 理将服务之间的依赖转化为服务对服务中心的依赖。除此之外还需要考虑 服务的注册与发现 分布式配置中心 服务路由 负载均衡 熔断限流 分布式链路监控 这些都需要对应的技术来实现我们是自己研发还是选择市场上比较成熟的技术拿来就用呢如果市 场上有多种相同的解决方案应该如何做好技术选型 2.2 微服务技术栈选型 业内比较主流的微服务解决方案进行分析主要包括 Spring Cloud Netflix Spring Cloud Alibaba 什么是Spring Cloud全家桶 Spring Cloud提供了一些可以让开发者快速构建微服务应用的工具比如配置管理、服务发现、熔 断、智能路由等这些服务可以在任何分布式环境下很好地工作。Spring Cloud主要致力于解决如下 问题 Distributed configuration分布式配置 Service registration and discovery服务注册与发现 Routing服务路由 Service-to-service calls服务调用 Load balancing负载均衡 Circuit Breakers断路器 Distributed messaging分布式消息 需要注意的是Spring Cloud并不是Spring团队全新研发的框架它只是把一些比较优秀的解决微服 务架构中常见问题的开源框架基于Spring Cloud规范进行了整合通过Spring Boot这个框架进行再 次封装后屏蔽掉了复杂的配置给开发者提供良好的开箱即用的微服务开发体验。不难看出Spring Cloud其实就是一套规范而Spring Cloud Netflix、Spring Cloud Alibaba才是Spring Cloud规范的实现。 Alibaba的开源组件在服务治理上和处理高并发的能力上有天然的优势毕竟这些组件都经历过数次双 11的考验也在各大互联网公司大规模应用过。所以相比Spring Cloud Netflix来说Spring Cloud Alibaba在服务治理这块的能力更适合于国内的技术场景同时Spring Cloud Alibaba在功能 上不仅完全覆盖了Spring Cloud Netflix原生特性而且还提供了更加稳定和成熟的实现 Spring Cloud Alibaba版本选择 版本说明 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%A C%E8%AF%B4%E6%98%8E 本期我们选择版本Spring Cloud Alibaba 2022.0.0.0 构建Maven项目的父pom parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.0.2/versionrelativePath/ !-- lookup parent from repository --/parentpropertiesjava.version17/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingspring-boot.version3.0.2/spring-boot.versionspring-cloud-alibaba.version2022.0.0.0/spring-cloud-alibaba.versionspring-cloud.version2022.0.0/spring-cloud.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${spring-cloud.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${spring-cloud-alibaba.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.8.1/versionconfigurationsource17/sourcetarget17/targetencodingUTF-8/encoding/configuration/plugin/plugins/build3. Alibaba 服务注册与发现组件Nacos实战 3.1 为什么需要注册中心 思考如果服务提供者发生变动服务调用者如何感知服务提供者的ip和端口变化 // 微服务之间通过 RestTemplate 调用 ip:port 写死 , 如果 ip 或者 port 变化呢 String url http://localhost:8020/order/findOrderByUserId/ id ; R result restTemplate . getForObject ( url , R . class ); 服务注册中心的作用就是服务注册与发现 服务注册就是将提供某个服务的模块信息(通常是这个服务的ip和端口)注册到1个公共的组件上去。服务发现就是新注册的这个服务模块能够及时的被其他调用者发现。不管是服务新增和服务删减都能实现自动发现。 3.2 注册中心选型 3.3 Nacos是什么 官方文档 https://nacos.io/zh-cn/docs/v2/what-is-nacos.html Nacos /nɑ:k əʊ s/ 是 Dynamic Naming and Configuration Service的首字母简称一个更易于构建 云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集帮助您快速实 现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 优势 易用 简单的数据模型标准的 restfulAPI易用的控制台丰富的使用文档。 稳定 99.9% 高可用脱胎于历经阿里巴巴 10 年生产验证的内部产品支持具有数百万服务的大规模场景具 备企业级 SLA 的开源产品。 实时 数据变更毫秒级推送生效1w 级SLA 承诺 1w 实例上下线 1s99.9% 推送完成10w 级SLA 承诺 1w 实例上下线 3s99.9% 推送完成100w 级别SLA 承诺 1w 实例上下线 9s 99.9% 推送完成。 规模 十万级服务/配置百万级连接具备强大扩展性。 3.4 Nacos 注册中心架构 相关核心概念 服务 (Service) 服务是指一个或一组软件功能例如特定信息的检索或一组操作的执行其目的是不同的客户端可 以为不同的目的重用例如通过跨进程的网络调用。Nacos 支持主流的服务生态如 Kubernetes Service、gRPC|Dubbo RPC Service 或者 Spring Cloud RESTful Service。 服务注册中心 (Service Registry) 服务注册中心它是服务及其实例和元数据的数据库。 服务实例在启动时注册到服务注册表并在关 闭时注销。服务和路由器的客户端查询服务注册表以查找服务的可用实例。服务注册中心可能会调用 服务实例的健康检查 API 来验证它是否能够处理请求。服务元数据 (Service Metadata) 服务元数据是指包括服务端点(endpoints)、服务标签、服务版本号、服务实例权重、路由规则、安全 策略等描述服务的数据。 服务提供方 (Service Provider) 是指提供可复用和可调用服务的应用方。 服务消费方 (Service Consumer) 是指会发起对某个服务调用的应用方。 核心功能 服务注册 Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务提供自身的元 数据比如ip地址、端口等信息。Nacos Server接收到注册请求后就会把这些元数据信息存储在一 个双层的内存Map中。 服务心跳 在服务注册后Nacos Client会维护一个定时心跳来持续通知Nacos Server说明服务一 直处于可用状态防止被剔除 。 默认5s发送一次心跳。 服务同步 Nacos Server集群之间会互相同步服务实例用来保证服务信息的一致性。 服务发现 服务消费者Nacos Client在调用服务提供者的服务时会发送一个REST请求给Nacos Server获取上面注册的服务清单并且缓存在Nacos Client本地同时会在Nacos Client本地开启 一个定时任务定时拉取服务端最新的注册表信息更新到本地缓存 服务健康检查 Nacos Server会开启一个定时任务用来检查注册服务实例的健康情况对于 超过15s 没有收到客户端心跳的实例会将它的healthy属性置为false (客户端服务发现时不会发现)如果某个实 例 超过30秒没有收到心跳直接剔除该实例 (被剔除的实例如果恢复发送心跳则会重新注册) 3.5 微服务整合Nacos注册中心实战 Nacos Server环境搭建 官方文档 https://nacos.io/zh-cn/docs/v2/guide/admin/deployment.html 1) 下载 nacos server安装包 选择安装nacos server版本 v2.2.1 wget https :// github . com / alibaba / nacos / releases / download / 2.2.1 / nacos - server - 2.2.1 . tar . gz 2) 进入conf/application.properties配置nacos.core.auth.plugin.nacos.token.secret.key密钥 # 默认鉴权插件用于生成用户登陆临时 accessToken 所使用的密钥使用默认值有安全风险 (2.2.0.1 后无 默认值) nacos . core . auth . plugin . nacos . token . secret . key aiDLyHlCgaXB08FL5zS3W6YQZssTVNScY 注意 在2.2.0.1版本后社区发布版本需要自行填nacos.core.auth.plugin.nacos.token.secret.key 的值否则无法启动节点。 自定义密钥时推荐将配置项设置为Base64编码的字符串且原始密钥长度不得低于32字符。 权限认证 https://nacos.io/zh-cn/docs/v2/guide/user/auth.html 随机字符串生成工具: http://tool.pfan.cn/random?chknumber1chklower1chkupper1 3) 解压进入nacos目录 单机模式启动nacos bin / startup . sh - m standalone 也可以修改默认启动方式 4 访问nacos的管理端http://ip:8848/nacos 默认的用户名密码是 nacos/nacos 微服务提供者整合Nacos 使用 Spring Cloud Alibaba Nacos Discovery可基于 Spring Cloud 的编程模型快速接入 Nacos 服务注册功能。服务提供者可以通过 Nacos 的服务注册发现功能将其服务注册到 Nacos server 上。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/87040.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!