zoukankan      html  css  js  c++  java
  • 老项目多机部署初步解决方案

    1. 场景描述

    java老系统要做多机部署,对外提供服务,让分析下可能需要做哪些工作,简单梳理了下,分享下。

    2. 解决方案

    多机部署可能存在问题及初步方案:

    2.1 session共享问题

    场景: A服务器登录,请求负载打到B服务器会报未登录;
    初步方案:软件老王以前这样做过,springboot+Spring Session+redis实现session共享。

    2.2 定时任务

    场景:定时任务多机部署,会存在重复执行及垃圾数据。

    初步方案:通过固定ip执行或者时间错开,都不太行,网上给了一种方案,通过数据库中的排他锁的方式,侵入性有点高,软件老王在看能不能通过aop来做。

    2.3 多线程任务处理问题

    场景:多线程任务处理问题,前端请求A服务器创建了线程执行任务,再次请求可能会到B服务器
    初步方案:考虑使用指定ip策略,但是该策略存在缺陷,无法自动下架宕机机器,需要再看下

    2.4 多机部署中,同时写数据库

    场景:多机部署中,同时读取数据库中任务或者字段,代码中需要加锁,否则可能存在重复修改或获取到垃圾数据。

    初步方案:(1)数据库层面,排他锁及数据增加版本号(2)分布式数据库redis等

    2.5 本地缓存问题

    场景:是否存在本地缓存,比如会设置某个值到缓存中A服务器本地缓存中,多机部署中负载到B服务器会获取不到
    初步方案:redis分布式数据库可解决,软件老王需要看下代码是否需要。


    I’m 「软件老王」,如果觉得还可以的话,关注下呗,后续更新秒知!欢迎讨论区、同名公众号留言交流!

  • 相关阅读:
    将数组转换为 List, 使用 Collections.addAll(arrayList, array)
    Numpy学习笔记
    sql 批量修改字段内容
    sql 查询的优化
    选择低薪喜欢的工作, 还是高薪不喜欢的工作 ?
    Tornado + Bootstrap 快速搭建自己的web应用
    sql查询出现次数最多的记录的名称和现次数以及QT聚合查找失败解决
    idea中修改git提交代码的用户名
    初识Spring Cloud与微服务
    微信小程序解析富文本的几种方法
  • 原文地址:https://www.cnblogs.com/ruanjianlaowang/p/12018637.html
Copyright © 2011-2022 走看看