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

网站建设设计策划昆明网站公司建设

网站建设设计策划,昆明网站公司建设,成都注册公司哪个区好,公众平台微信公众号官网Dubbo——原生API实现远程调用_Strine的博客-CSDN博客 在上一篇文章中我们讲了如何使用原生API发起远程调用#xff0c;显然这种方式肯定是非常麻烦的#xff0c;因此我们这里就讲如何使用SpringBoot去集成Dubbo将这些配置简化。 生产者服务 添加配置文件 dubbo:applicat…Dubbo——原生API实现远程调用_Strine的博客-CSDN博客 在上一篇文章中我们讲了如何使用原生API发起远程调用显然这种方式肯定是非常麻烦的因此我们这里就讲如何使用SpringBoot去集成Dubbo将这些配置简化。 生产者服务 添加配置文件 dubbo:application:name: product-serverregistry:address: zookeeper://127.0.0.1:2181protocol:name: dubboport: 20880#允许Bean覆盖 spring:main:allow-bean-definition-overriding: true 添加启动类 添加EnableDubbo注解用来扫描dubbo的Service注解 SpringBootApplication EnableDubbo public class ProductServer {public static void main(String[] args) {SpringApplication.run(ProductServer.class,args);} } 实现类 贴上Service注解注意是Dubbo提供的 消费者服务 添加配置文件 dubbo:application:name: websiteregistry:address: zookeeper://127.0.0.1:2181 spring:main:allow-bean-definition-overriding: true 控制层 RestController RequestMapping(/product) public class WebsiteController {Reference //引用Dubbo提供的动态代理对象private IProductService productService;Referenceprivate IMemberService memberService;GetMapping(/pro/{productId})public Product getProduct(PathVariable Long productId){return productService.get(productId);} 启动类 SpringBootApplication EnableDubbo public class WebsiteServer {public static void main(String[] args) {SpringApplication.run(WebsiteServer.class,args);} } Autowired和Reference的区别 Autowired是Spring的DI特性是注入当前项目的Bean对象 Reference是引用远程项目中的Bean对象; 事务问题分布式事务 A服务开启事务对B服务发起远程调用 B服务掉调用也开启了一个事务然后进行业务操作业务正常执行最终提交事务 A服务拿到远程调用的结果继续执行操作但是后面出现异常了 请问A事务的回滚能影响B服务中的事务吗 明显事务A和事务B是分别在不同机器上开启的事务相互独立他们是两个不同的事务因此传统的事务管理方式是不能应用在分布式系统中的在分布式系统中有专门的分布式事务处理方式如强一致性最终一致性例如Seata下的AT模式以及TCC模式就可以解决分布式事务 Dubbo Admin管控台 github源码地址GitHub - apache/dubbo-admin at master 该项目是SpringBoot开发的需要使用maven命令打包后运行或者直接放在idea工具中运行也可以 默认端口7001 账号密码都是root 我们可以点开目标服务并对服务的提供者和消费者进行相关操作   Dubbo的服务治理 启动时检测循环调用服务问题 在实际开发中经常会存在服务交叉引用的情况如A服务引用B服务B服务也引用A服务那么此时就存在问题无论哪个服务在启动时都会报错 那么此时我们可以设置消费者项目启动时不要去检查服务是否存在就可以顺利的启动项目了但是在运行时服务依然不存在的话还是会报错   #消费者不检测服务是否存在 dubbo.consumer.checkfalse 服务集群 只有一个服务对象时所有压力都落在同一个对象上逼近极限时很可能导致服务挂掉我们可以通过多发布几个服务对象通过负载均衡策略来缓解单一服务对象压力过大问题 生产者多发布几个服务对象注意修改多个服务发布的端口 # 生产者发布端口 dubbo.protocol.port20880 #生产者A # ------------ dubbo.protocol.port20883 #生产者B # ------------ ... 消费者修改负载均衡策略有以下选择 RandomLoadBalance随机random默认策略 RoundRobinLoadBalance轮询roundrobin ConsistentHashLoadBalancehash一致consistenthash LeastActiveLoadBalance最少活跃leastactive#appliaction.properties #修改消费者负载均衡策略 dubbo.consumer.loadbalanceroundrobin 多版本发布 服务在升级改造的过程中由于不清楚新版本的服务是否存在BUG往往都是采用过度的方式来进行切换此时就要求两个版本的服务都要存在 生产者在生产服务的时候指定该服务的版本号 Service(version1.0) public class UserServiceImpl implements IUserService { ... }Service(version2.0) public class UserServiceImpl implements IUserService { ... } 并且消费者必须明确告知引用哪个版本的服务 Reference(version1.0) private IUserService userService;Reference(version2.0) private IUserService userService;Reference(version*) //随机引用 private IUserService userService; 服务超时、重试、容错 在服务调用的过程中有可能服务生产者网络环境差但是消费者并不知道依然发出请求长时间没有回应此时我们可以设置消费者等待的超时时间当调用超过设置的时间时放弃等待远程的响应默认超时时间是1s 当发生超时时框架并不会马上就放弃服务的调用还会进行重试默认重试次数2次 我们可以修改消费端的配置来改变默认的超时时间和重试次数 #消费者设置超时时间1.5s dubbo.consumer.timeout1500 #消费者设置重试次数重试1次 dubbo.consumer.retries1#注意只有幂等性操作才能重试非幂等性操作是不能重试的 此时因超时调用失败出现的报错页面会直接的反馈给消费者消费者再把报错信息响应出去用户就会直接看到错误页面这样不友好而且用户也看不懂应该对错误信息进行处理给用户一个稍微正常点的数据这个就是服务的容错 从Dubbo Admin控制台去配置当前服务的容错当服务不能正常调用时返回null代替异常的信息 另外服务集群后还能配置集群下的容错机制有以下策略可以选择 1.FailoverCluster失败自动切换默认策略用于幂等性操作如查询 2.FailfastCluster快速失败只发起一次调用失败立即报错用于非幂等性操作如插入数据 3.FailsafeCluster失败安全出现异常时直接忽略。通常用于写入审计日志等操作 4.FailbackCluster失败自动恢复后台记录失败请求定时重发。通常用于消息通知操作 5.ForkingCluster并行调用多个服务器只要一个成功即返回。通常用于实时性要求较高的读操作但需要浪费更多服务资源。可通过 forks2 来设置最大并行数 6.BroadcastCluster广播调用所有提供者逐个调用任意一台报错则报错。通常用于通知所有提供者更新缓存或日志等本地资源信息#消费者配置服务集群容错策略 dubbo.consumer.clusterfailfast 服务降级 当服务器压力剧增的情况下根据实际业务情况及流量对一些服务和页面有策略的不处理或换种简单的方式处理从而释放服务器资源以保证核心交易正常运作或高效运作。 此时我们要保证服务B能抗住压力就只能去牺牲服务A甚至直接把服务A功能关闭掉把资源留给服务B使用此时我们就可以对服务A进行降级处理 从Dubbo Admin控制台去配置当前服务的降级消费者访问降级的服务时不发起远程调用请求直接返回null
http://www.sczhlp.com/news/227635/

相关文章:

  • 做网站销售工资河北网站建设推广电话
  • 网站推广注册wordpress 防刷新
  • 毕业设计网站前端代做工业产品设计有哪些
  • 延吉网站开发公司有哪些筑巢网络官方网站
  • 做网站改变图片位置企业网站建设网
  • 镇海建设银行网站网站建设_app开发
  • 网站建设实践报告心得建设企业网站初始必备的六大功能
  • wordpress添加主题不显示图片北京百度seo关键词优化
  • 顺德网站建设公司价位上海做网站技术
  • 网站建设技术服务公司做网站是先做界面还是先做后台
  • 网站建设公司与前端阿里云 建网站
  • 小型网站开发开题报告范文深圳平台设计
  • 如何建设简单小型网站网站漏扫
  • 电子商务网站建设实训心得体会专做脚本的网站
  • 社区做图网站做淘客网站需要备案
  • 做公司网站是永久性的吗做网站后端要学什么
  • 珠宝网站形象设计源码怎么做网站
  • 重庆个人网站建设重庆建工信息网官网
  • 个人备案购物网站家在深圳房产论坛
  • 做简历的网站叫什么软件wordpress外观选单分类添加不
  • 设计师常用的图片网站网站跳出率多少正常
  • 阜宁做网站哪家最好h5制作软件app手机版
  • 物流企业网站织梦模板wordpress教程 chm
  • 用wex5 网站开发山西企业建站方案
  • 网站每年续费费用江苏省建设人才网站
  • 佘山做网站wordpress 文章模版
  • 大学生网站建设策划书范文网页升级紧急通知页面升级
  • 单位的网站建设费如何核算女与男爱做电影网站免费
  • 代理 指定网站 host企业如何注册网站
  • 唐山网站建设互众动力软件推广方法