当前位置: 首页 > news >正文

中国建设工程造价管理协会网站简称个人网页内容

中国建设工程造价管理协会网站简称,个人网页内容,seo广告优化多少钱,吴江公司注册以下内容的代码可见#xff1a;SpringCloud_learn/day01 1.认识微服务 单体架构和分布式架构 体架构#xff1a;将业务的所有功能集中在一个项目中开发#xff0c;打成一个包部署 优点#xff1a;架构简单#xff0c;部署成本低缺点#xff1a;耦合度高 分布式架构#… 以下内容的代码可见SpringCloud_learn/day01 1.认识微服务 单体架构和分布式架构 体架构将业务的所有功能集中在一个项目中开发打成一个包部署 优点架构简单部署成本低缺点耦合度高 分布式架构根据业务功能对系统进行拆分每个业务模块作为独立项目开发称为一个服务 优点降低服务耦合有利于服务升级拓展 分布式架构要考虑的问题 服务拆分粒度如何服务集群地址如何维护服务之间如何实现远程调用服务健康状态如何感知 微服务是什么 微服务是一种经过良好架构设计的分布式架构方案该架构特征如下 单一职责微服务拆分粒度更小每一个服务都对应唯一的业务能力避免重复业务开发面向服务微服务对外暴露业务接口自治团队独立、技术独立、数据独立、部署独立隔离性强服务调用做好隔离、容错、降级避免出现级联问题架构复杂运维、监控、部署难度提高 2.服务拆分及远程调用 注意事项 单一职责不同微服务不要重复开发相同业务数据独立不要访问其它微服务的数据库面向服务将自己的业务暴露为接口供其它微服务调用 案例分析 假设此时需要根据订单id查询订单的同时把订单所属的用户信息一起返回该如何完成 传统方式 在订单模块中根据订单id查询订单在用户模块中根据用户id查询用户将两个结果进行拼接 远程调用即在订单模块(该接口地址为http://locahost:8080/order/xxx)中调用http://locahost:8081/user/xxx 在订单模块的OrderApplication中注册RestTemplate public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}Beanpublic RestTemplate restTemplate(){return new RestTemplate();} }修改订单模块中的OrderService的queryOrderById方法 public Order queryOrderById(Long orderId) {// 1.查询订单Order order orderMapper.findById(orderId);// 2.查询用户String url http://localhohst:8081/user/ order.getUserId();User user restTemplate.getForObject(url, User.class); // 发送http请求// 3.封装user信息order.setUser(user); // 注意Order类中具有User类型的字段这与数据库中的字段不一致// 4.返回return order; }提供者与消费者 服务提供者一次业务中被其它微服务调用的服务(提供接口给其它微服务比如用户模块) 服务消费者一次业务中调用其它微服务的服务(调用其它微服务提供的接口比如订单模块) 提供者与消费者角色是相对的一个服务可以同时是服务提供者和服务消费者 3.Eureka注册中心 远程调用的问题 服务消费者该如何获取服务提供者的地址信息在2.服务拆分及远程调用中采用的是硬编码的形式如果有多个服务提供者则每次都要对ip地址进行更换 如果有多个服务提供者消费者该如何选择 消费者如何得知服务提供者的健康状态 Eureka的作用 消费者该如何获取服务提供者具体信息 服务提供者启动时向eureka注册自己的信息eureka保存这些信息消费者根据服务名称向eureka拉取提供者信息 如果有多个服务提供者消费者该如何选择 服务消费者利用负载均衡算法从服务列表中挑选一个 消费者如何感知服务提供者健康状态 服务提供者会每隔30秒向EurekaServer发送心跳请求报告健康状态eureka会更新记录服务列表信息心跳不正常会被剔除消费者就可以拉取到最新的信息 实践案例 搭建注册中心(即搭建EurekaServer) 创建新项目引入spring-cloud-starter-netflix-eureka-server的依赖编写启动类添加EnableEurekaServer注解添加application.yml文件编写以下配置 server:port: 10086 spring:application:name: eurekaserver eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka/ # eureka本身也是一个服务所以会将自己注册上去注册user-service和order-service(order-service虽然是消费者但与user-service一样都是eureka的客户端同样可实现服务注册)以注册user-service为例 在user-service项目引入spring-cloud-starter-netflix-eureka-client的依赖在application.yml文件编写以下配置 spring:application:name: userservice eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka/在order-service完成服务拉取服务拉取基于服务名称获取服务列表然后再对服务列表做负载均衡 修改OrderService的代码修改访问的url路径用服务名代替ip、端口 String url http://userservice/user/ order.getUserId();在order-service的启动类OrderApplication中的RestTemplate加负载均衡注解(因为开启了两个user-service) Bean LoadBalanced public RestTemplate restTemplate(){return new RestTemplate(); }4.Ribbon负载均衡 负载均衡流程 当远程调用http://userservice/user/xxx时该地址并不是一个可以直接访问的地址这该咋办此时需要Ribbon 简易流程图 详细流程图 负载均衡策略 Ribbon的负载均衡规则是由IRule接口定义的每一个子接口都是一种规则 通过定义IRule实现可以修改负载均衡规则有两种方式 在order-service中的OrderApplication类中定义一个新的IRule // 之后无论orderservice调用哪个服务模块都使用该规则 Bean public IRule randomRule() {return new RandomRule(); }在order-service的application.yml文件中添加新的配置(更加灵活) # 指定服务名称这样在调用该服务时才会使用到配置的规则 userservice:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则 饥饿加载 Ribbon默认是采用懒加载即第一次访问(比如输入http://localhost:8080/order/101)时才去创建LoadBalanceClient请求时间很长饥饿加载会在项目启动时创建降低第一次访问的耗时通过下面配置开启饥饿加载 ribbon:eager-load:enabled: true # 开启饥饿加载clients: userservice # 指定对userservice服务进行饥饿加载5.Nacos注册中心 Nacos是阿里巴巴的产品现在是SpringCloud中的一个组件相比Eureka功能更加丰富在国内受欢迎程度较高 安装nacos tips: 如果启动不了注意环境变量中是否存在名称为JAVA_HOME变量启动nacos 进入nacos所在文件下的bin目录在命令行窗口输入startup.cmd -m standalone(关闭的时候在另一个窗口输入shutdown.cmd) 打开网页后账号和密码都是nacos 服务注册到Nacos 完成Nacos的安装后进行以下几个步骤 在父工程cloud-demo中添加管理依赖spring-cloud-alibaba-dependencies注释order-service和user-service中原有的eureka依赖在order-service和user-service中添加nacos的客户端依赖spring-cloud-starter-alibaba-nacos-discovery修改user-service和order-service中的application.yml文件注释eureka地址添加nacos地址 spring:cloud:nacos: # 配置nacosserver-addr: localhost:8848 # nacos服务地址启动并测试 Nacos服务分级存储模型 一个服务可以存在多个实例每个实例又可以分布在不同的集群中 服务跨集群调用问题 服务调用尽可能选择本地集群的服务因为跨集群调用延迟较高 本地集群不可访问时再去访问其它集群 服务集群配置 假设存在user-service1、user-service2和user-service3三个实例要将其中两个配置到同个集群中剩余实例配置到另个集群中 修改user-service的application.yml在配置文件中添加以下内容后启动其中两个实例再修改集群名称然后启动剩余实例 spring:cloud:nacos: server-addr: localhost:8848discovery:cluster-name: KM # 集群名称(自定义)另一个修改为DG在nacos网页中可以看到user-service对应的两个集群以及详细的实例信息 根据集群负载均衡 假设想让order-service调用KM集群中的user-service实例 修改order-service的application.yml让该服务也在KM集群中 spring:cloud:nacos: server-addr: localhost:8848discovery:cluster-name: KM # 集群名称(即让自己属于KM集群)再次修改order-service的application.yml设置负载均衡的IRule为NacosRule(该规则会优先寻找与自己同集群的服务进行随机访问) userservice: ribbon:NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule tips 如果KM集群中的user-service实例挂了或未启动则order-service再去访问DG集群的user-service实例 根据权重负载均衡 在Nacos网页中可以设置实例的权重值进而控制不同机器承担不同数量的用户请求 选择某个服务并进入其实例界面点击编辑按钮在权重框中自定义权重(权重越高被访问的频率越高设置为0则完全不会被访问方便对某个服务器进行停机升级的同时不影响用户使用服务) 环境隔离namespace Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西用来做最外层隔离(图中集群在Service下) 使用namespace的具体操作步骤如下 创建namespace用来隔离不同环境 填写一个新的命名空间信息 修改目标application.yml(这里以order-service为例)将新空间的命名空间ID添加到文件中 spring:cloud:nacos:server-addr: localhost:8848discovery:cluster-name: KMnamespace: xxxx # 命名空间ID重启order-service并访问http://localhost:8080/order/101因为namespace与user-service(属于默认的public命名空间)不同会导致找不到user-service(不同namespace下的服务互相不可见)控制台报错 原理 Nacos与eureka的共同点 都支持服务注册和服务拉取都支持服务提供者心跳方式做健康检测 Nacos与Eureka的区别 Nacos支持服务端主动检测提供者状态临时实例采用心跳模式非临时实例采用主动检测模式临时实例心跳不正常(即宕机)会被剔除非临时实例则不会被剔除(标记为不健康)可使用以下代码配置临时(默认)和非临时实例 spring:cloud:nacos: server-addr: localhost:8848discovery:cluster-name: KM ephemeral: false # 设置为非临时实例Nacos支持服务列表变更的消息推送模式服务列表更新更及时(Eureka采用pullNacos是pushpull)Nacos集群默认采用AP方式当集群中存在非临时实例时采用CP模式Eureka采用AP方式 参考 黑马程序员SpringCloud框架P1-P23
http://www.hkea.cn/news/14448062/

相关文章:

  • 江苏建设培训网站网站建设公司哪家
  • 学做网站论坛课程东城网站开发公司
  • 网站开发 定义注册安全工程师报名时间
  • 大岭山仿做网站wordpress主题模板中国
  • 网站开发语言 排行榜网站开发手机模拟器
  • 织梦网站名称改不了跨境电商的基本流程
  • 在门户网站做产品单页多少钱一天培训公司网站建设
  • 中国前十强企业排名wordpress博客模板seo
  • 安全的合肥网站建设wordpress wnmp
  • 通讯员队伍建设与网站新闻管理新干线快递国内如何查单
  • 国外著名购物网站排名咸阳北京网站建设
  • 网站建设推广公司哪家好app拉新任务平台
  • 微信浏览为网站的缓存怎么清理17zwd一起做网站株洲站
  • 千里做他千百度网站西安网站制作公司怎么选
  • 便宜网站建设成都福州网站制作费用
  • 网站开发新加坡聊城做网站的网络公司
  • wordpress能仿站吗建设银行网站机构特点业务发展
  • 在哪里学做网站百度一下 你就知道官方
  • 国内企业网站建设wordpress修改代码后
  • 网站建设论文源代码佛山专业网站开发公司
  • 餐饮网站建设策划书手机网站与微信结合
  • 怎么查网站的关键词四川省建设人才网站
  • 网站选项卡图标石家庄市园林局招标
  • 西安自助建站做网站钟祥网站制作
  • 辽宁建设厅官方网站做防护信息的网站
  • 做网站用的云控制台wordpress图片本地
  • 电商模板网站福永专业外贸网站建设公司
  • 学做视频的网站有哪些wordpress tag转专题
  • 企业网站建设网建小网站多少钱
  • 如何登录网站空间知乎网站建设