博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分布式系统若干经验总结
阅读量:6278 次
发布时间:2019-06-22

本文共 965 字,大约阅读时间需要 3 分钟。

hot3.png

 Session方面
  Tomcat自带的Session,不能解决跨系统的问题。
  要么把Session和Redis结合,所有系统统一使用一个Redis上的Session。
  要么,根据Cookie手动实现Session,把Session存到Redis中。
  我觉得分布式系统的Session关键是,维护一份数据并且多个系统都可以拿到。至于Session是怎么实现的,不是很重要。
锁的几种方式
mysql:select for update 默认等待50s
oracle:select for update no wait可以不用等待。
update status=newstatus where status=oldstatus (变种,维护一个oldstatus字段:update status=newstatus where oldstatus=oldstatus)
带条件更新,不能强制更新,是一种不错的思路。
select count(*)会锁表。
like '303578599%'可以走索引。
like '%303578599%' 不走索引,全表扫描。
可以使用explain等分析sql语句的执行情况。
目前,关于性能优化方面,个人项目的需求还不是很大。
关于事务和锁,需要根据实际需求,量身定制。
就目前咱们的项目来说,事务和锁都直接支持在分布式环境,比较小巧,成本较低。
事务和锁应该怎么设计,更多取决于自己的业务,业务层面和技术层面都应该考虑。
同步与锁,目前主要用了3种技巧
redis埋一个缓存,setIfAbset,实现分布式锁。但是,项目中有bug,还需要分析。
select for update需要在事务环境下。
update status=newstatus where status=oldstatus,可以解决一定程度上的并发更新问题,防止状态推送的重复更新。
事务的一些场景
1个事务,比如支付和接收款项,是在一个事务中。
2个事务,回款相关的更新状态在一个事务,给多个用户账户回款,可以允许部分出错。只要记下回款失败的,下次手动或自动补上就行了。
比较复杂一点的是,大的事务里包含了多个事务。

转载于:https://my.oschina.net/jiutianniao/blog/399772

你可能感兴趣的文章
.net中ashx文件有什么用?功能有那些,一般用在什么情况下?
查看>>
select、poll、epoll之间的区别总结[整理]【转】
查看>>
CSS基础知识(上)
查看>>
PHP中常见的面试题2(附答案)
查看>>
26.Azure备份服务器(下)
查看>>
mybatis学习
查看>>
LCD的接口类型详解
查看>>
Spring Boot Unregistering JMX-exposed beans on shutdown
查看>>
poi 导入导出的api说明(大全)
查看>>
Mono for Android 优势与劣势
查看>>
将图片转成base64字符串并在JSP页面显示的Java代码
查看>>
js 面试题
查看>>
sqoop数据迁移(基于Hadoop和关系数据库服务器之间传送数据)
查看>>
腾讯云下安装 nodejs + 实现 Nginx 反向代理
查看>>
试水区块链出版?纽约时报在招人了
查看>>
拥抱PostgreSQL,红帽再表态:SSPL的MongoDB坚决不用
查看>>
QCon演讲速递:异步处理在分布式系统中的优化作用
查看>>
Javascript 中的 Array 操作
查看>>
YARN的AsyncDispatcher原理
查看>>
java中包容易出现的错误及权限问题
查看>>