Git Product home page Git Product logo

miaosha's Introduction

互联网 Java 秒杀系统设计与架构

朋友们,感谢大家对我文章的支持。时间过得很快, 这部分内容还是我几年前刚毕业时写的,而且也只是个人项目,被公众号文章给我一顿喷,博主内容我也看了,晚上回到家就简单的回复下, 想了一下,因为确实没精力维护,对于小白会造成误导,决定下线这个项目,这是我的第一个项目,就让他成回忆吧!以免对自己造成困扰! 大家以后还是可以微信交流其它问题,有时间也会为大家解答!

1.理性看待

我本意是将一些自己的思路和方向表达出来,因为star的激增,我也就做了最初的一版规划,那时候刚毕业没多久,很荣幸这个项目从一个小项目扩张成了大项目,但也都是一些当时不成熟的想法 ,项目没有完全完成, 也只是自己练手的入门级项目,旨在学习更多的知识,所有大家在看到这个项目的时候要有更多自己的思考和过滤,不要一味的照搬照抄!最后那些不理性的同学,给大家推荐俩本书 《我就是你啊》和《非暴力沟通》没准可以让你进化!

miaosha's People

Contributors

aprilz-code avatar big-mango avatar chengleia avatar dependabot[bot] avatar jokermonitor avatar liudaze avatar liuqian1990 avatar qiurunze123 avatar taopeng-life avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

miaosha's Issues

学会了欢迎来面试,肯定让你过,借楼招人

字节跳动教育线新项目,大投入,千亿级市场,服务端工程师大量缺口(客户端,前端也招),各级别都要。项目主要使用Golang/Python,但是语言不做要求,可以来了再学。研发直招渠道,快速反馈,支持年前面试(可以远程面试),年后报道,北京、上海都有HC。完整简历请投邮箱 [email protected]。邮件标题:在线教育+姓名

登录存在问题?

登录时调用的方法是getByNickName,实际上登陆使用的是id(也是用户的mobile),所以,这里需要改下

文档错误

文档中,第四条是错误,如下:
image

1.在秒杀一类的场景里面,因为数据量亿万级所有即使有的有缓存有的时候也是扛不住的,不可避免的透穿到DB
所有在写一些sql的时候就要注意:
1.一定要避免全表扫描,如果扫一张大表的数据就会造成慢查询,导致数据的连接池直接塞满,导致事故
首先考虑在where和order by 设计的列上建立索引
例如: 1. where 子句中对字段进行 null 值判断 .
2. 应尽量避免在 where 子句中使用!=或<>操作符
3. 应尽量避免在 where 子句中使用 or 来连接条件
4. in 和 not in 也要慎用,否则会导致全表扫描
5. select id from t where name like '%abc%' 或者
6.select id from t where name like '%abc' 或者
7. 若要提高效率,可以考虑全文检索。
8.而select id from t where name like 'abc%' 才用到索引 慢查询一般在测试环境不容易复现
9.应尽量避免在 where 子句中对字段进行表达式操作 where num/2 num=100*2
2.合理的使用索引 索引并不是越多越好,使用不当会造成性能开销
3.尽量避免大事务操作,提高系统并发能力
4.尽量避免象客户端返回大量数据,如果返回则要考虑是否需求合理,实在不得已则需要在设计一波了!!!!!

redis缓存和db库存双写问题

想问下博主如何解决的,能说下思路吗,现在我这边碰到问题是:先删除缓存在更新数据库,虽然采用的是用内存队列来存储读写请求,在用一个线程池去处理这个读写请求,虽然可以解决这个双写问题,但是它是单jvm的,如果多台服务器还是存在这个问题,想问下博主有什么好的方案吗,我想了用redis存储读写请求,但是集群条件下还是存在该问题,不知道博主是否遇到过,我看这个秒杀应该也有该问题

代码优化

使用aop切面限制AccessLimit这个注解的作用对代码侵入更低啊

昨天我的公众号里的用户反应了不少问题!

昨天我的公众号里的用户反应了不少问题!
当然都是一些菜鸟问题,比如,Redis 的密码不一样都不知道改!启动,dev,test,prod都不知道啥意思的。
我都给他们说了,让他们前来 给 star!

作者整理的很好,必须赞赞赞!

image

我的公众号还提供CSDN 免费下载服务!

图片

你的图片都显示不了
Snipaste_2020-06-11_15-33-45

非官方小白运行教程

  1. 点击fork(如果只打算运行,不打算新建自己的分支的不要fork,直接进行步骤2)
  2. 使用git clone到本地
  3. 导入到idea
  4. pom.xml中加载依赖
  5. mysql中新建miaosha
  6. miaosha库运行miaosha.sql
  7. 部署redis
  8. 部署rabbitmq
  9. rabbitmq中添加miaoshatestmiaosha.queue队列
  10. mysqlredisrabbitmq的信息填入到src/main/resources/application.properties
  11. 运行com.geekq.miaosha.GeekQMainApplication
  12. 访问地址 http://localhost:8080/login/to_login
  13. mysql miaosha数据库中把miaosha_userid字段改为自增(默认的id为手机号,密码是123456加1a2b3c混淆)
  14. 可以用自己的手机号注册
  15. 修改miaosha_good中的start_timeend_time
  16. 指定时间可进行秒杀

知乎等更新了详细图文教程以及一系列本项目的详细解释 欢迎大家来探讨。
https://zhuanlan.zhihu.com/p/106343613

怎么登陆

大佬,项目index.html hello.html login.html都登陆不了

项目里面好几处错误,启动不起来,依次列举并提供解决方法

  1. miaosha-2version下的miaosha-service缺少miaosha-common依赖
    解决:在miaosha-service的pom添加miaosha-common dependency
  2. miaosha-2version的pom文件中引入了子模块miaosha-common,导致编译失败
    解决:注释掉miaosha-common dependency
  3. miaosha-2version的pom加入了spring boot maven plugin 导致编译失败
    解决:将spring boot maven plugin移到miaosha-2version子模块miaosha-web的pom文件中
  4. miaosha-admin-web 引入miaosha-admin-service的dependency,由于admin-service打包成war,导致编译出错
    解决:在miaosha-admin-service的pom中加入
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<configuration>
					<!--注意增加这两行,在打包时相关的类会被独立打成jar -->
					<attachClasses>true</attachClasses>
					<classesClassifier>api</classesClassifier>
				</configuration>
				<version>2.4</version>
				<executions>
				</executions>
			</plugin>

在miaosha-admin-web的pom将miaosha-admin-service的dependency改为:

		<dependency>
			<groupId>com.geekq</groupId>
			<artifactId>miaosha-admin-service</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<type>jar</type>
			<classifier>api</classifier>
		</dependency>

  1. miaosha的pom文件中多了salt
    解决:删除salt
  2. miaosha-2version没有对应的建库文件
    根据mapper文件写了不完整的sql,实在是懒得搞了
create database miaosha2;
use miaosha2;
create table userinfo
(
    id          BIGINT auto_increment primary key,
    version     INTEGER,
    bitState    BIGINT,
    realName    varchar(200),
    idNumber    varchar(200),
    phoneNumber varchar(200),
    authScore   int,
    email       varchar(200),
    realauthId  bigint

);
create table systemdictionary
(
    id    BIGINT primary key auto_increment,
    sn    varchar(200),
    title varchar(200),
    intro varchar(200)

);
create table systemdictionaryitem
(
    id       BIGINT auto_increment primary key,
    parentId BIGINT,
    title    varchar(200),
    tvalue   varchar(200),
    sequence TINYINT,
    intro    varchar(200)

);
create table orders
(
    id        varchar(200) primary key not null,
    order_num varchar(200),
    item_id   varchar(200)

);
create table iplog
(
    id          BIGINT auto_increment primary key,
    ip          VARCHAR(200),
    loginState  TINYINT,
    username    VARCHAR(200),
    loginInfoId BIGINT,
    loginType   TINYINT,
    loginTime   TIMESTAMP

);
create table account
(
    id                 BIGINT primary key auto_increment,
    tradePassword      VARCHAR(200),
    usableAmount       DECIMAL,
    freezedAmount      DECIMAL,
    borrowLimitAmount  DECIMAL,
    version            INTEGER,
    unReceiveInterest  DECIMAL,
    unReceivePrincipal DECIMAL,
    unReturnAmount     DECIMAL,
    remainBorrowLimit  DECIMAL,
    abstractInfo       varchar(200)

);

alter table userinfo
 add incomeGrade_id bigint,
 add marriage_id bigint,
 add kidCount_id bigint,
 add educationBackground_id bigint,
 add houseCondition_id bigint;

....
....

PS: 这么多star,难道大家之star,不实际运行的吗?还是只有我遇到这种错误?

为什么redis数量会减少为负数

减少为负数可以理解,优化了内存写法和sql写法之后就不会了。。这里的优化具体是指啥优化哦(项目里面没注意到) redis减少为负数和sql有啥关系涅。。

网站访问统计一个实现想法

这里是统计登陆访问的流量,在登陆逻辑使用Spring AOP切面,在登陆逻辑完成后 记录本次登陆的相关信息 这部分信息放入缓存,后续持久化

clone 速度很缓慢

clone GitHub上的其他项目速度正常,本项目则速度骤降,一直维持在10几Kb的速度,请问其他人有遇到这样的吗?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.