文档章节

分布式系统若干经验总结

FansUnion
 FansUnion
发布于 2015/05/03 01:28
字数 509
阅读 28
收藏 0
 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个事务,回款相关的更新状态在一个事务,给多个用户账户回款,可以允许部分出错。只要记下回款失败的,下次手动或自动补上就行了。
比较复杂一点的是,大的事务里包含了多个事务。

© 著作权归作者所有

FansUnion
粉丝 60
博文 858
码字总数 825464
作品 0
丰台
高级程序员
私信 提问
从NoSQL到NewSQL,京东经验总结

  【IT168 专稿】本文根据【2016 第七届中国数据库技术大会】(微信搜索DTCC2014,关注关注中国数据库技术大会公众号)现场演讲嘉宾刘海锋老师分享内容整理而成。录音整理及文字编辑IT168...

it168网站
2016/08/03
0
0
基于MVC4+EasyUI的Web开发框架形成之旅--总体介绍

最近花了很多时间在重构和进一步提炼Winform开发框架的工作上,加上时不时有一些项目的开发工作,我博客里面介绍Web开发框架的文章比较少,其实以前在单位工作,80%的时间是做Web开发的,很早...

walb呀
2017/12/04
0
0
架构设计原则、开发工具

架构设计原则、开发总结.潘洪亮.pptx SpringCloud微服务分布式 311106863 1. 积分系统介绍: 对用户进行激励就是为了让用户更多的使用其产品或者服务,这样才能实现产品的价值。 而积分体系就...

北京起航
2015/09/25
232
0
基于Metronic的Bootstrap开发框架经验总结(17)-- 使用 summernote插件实现HTML文档的编辑和图片插入操作

在很多场合,我们需要在线编辑HTML内容,然后在页面上或者其他终端上(如小程序、APP应用等)显示,编辑HTML内容的插件有很多,本篇介绍基于Bootstrap的 summernote插件实现HTML文档的编辑和...

walb呀
2017/12/04
0
0
基于MVC4+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录

最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重...

walb呀
2017/12/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

idea 打开一个新的项目,maven都需要重新配置,解决方案

需要有个默认全局配置 File->Other Settings -> Default Settings 将Maven home directory目录修改成我们自定安装Maven的目录...

观海562
19分钟前
2
0
链表中环的入口节点

给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 思路: public ListNode EntryNodeOfLoop(ListNode pHead) { if (pHead == null || pHead.next == null) ...

Garphy
39分钟前
5
0
Spring5 源码分析-容器刷新-invokeBeanFactoryPostProcessors()方法

上一篇:Spring5 源码分析-容器刷新-prepareBeanFactory()方法 该方法主要完成以下功能: 1.实例化ConfigurationClassPostProcessor,并调用ConfigurationClassPostProcessor.postProcessBe...

特拉仔
39分钟前
5
0
为什么MySQL用B+树做索引

索引这个词,相信大多数人已经相当熟悉了,很多人都知道MySQL的索引主要以B+树为主,但是要问到为什么用B+树,恐怕很少有人能把前因后果讲述的很完整。本文就来从头到尾介绍下数据库的索引。...

小致Daddy
今天
8
0
网站前台的三级联动数据封装

我在进行项目时候遇到了一个进行数据封装的一个功能,进行数据的封装的功能也挺复杂,来回试了好几十种方法.最后使用的是这种方法. 使用一个pojo进行封装两个数据,一个是list一个是实体类. 具体...

小天丶羽
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部