关键词:
电商项目总结
1.系统架构
采用当前最流行的ssm(springmvc+spring+mybatis)框架开发,是当前电商网站首选的技术架构。系统是基于SOA架构设计,采用dubbo作为服务中间件,系统后台使用jsp作为视图层,操作简便用户体验好。商城系统使用freemarker做静态化页面来提高系统的性能,使用nginx做负载均衡服务器以应对大规模的用户量的并发。电商搜索系统采用当前最流行的全文检索技术solr实现。系统中使用redis做缓存,使用Activemq做消息中间件。后台数据库使用mysql数据库,读写分离是建立在主从复制的前提下的
做读写分离
2.dubbo的使用方法
Dubbo是一个分布式服务框架,提供了统一的高性能的远程服务调用平台。所有的业务逻辑都使用dubbo发布供表现层工程调用。发布dubbo服务需要使用spring容器的支持来发布服务,调用服务同样使用spring容器来应用服务。其中服务的发布和服务的发现都是通过注册中心来实现,我们使用zookeeper作为注册中心。使用dubbo的监控中心监控中心来统计各服务调用次数,调用时间等。
3.如何保存图片的
在电商项目中需要保存大量的图片,需要一个独立的图片服务器来保存,而且存储的容量需要可扩展。并且还需要解决在高并发及高可用的问题。所以我们采用一个FastDFS一个分布式文件系统来保存图片。FastDFS可以搭建服务器集群,解决了存储空间的水平扩展、负载均衡以及服务器的高可用问题。
4.网页静态化的实现方案
创建一个独立的工程,此工程的功能就是生成静态化页面的,例如商品详情页面静态化。将此工程独立部署到一个服务上,页面就生成到当前服务的磁盘上,并且此工程监听MQ的消息,一旦后台工程添加商品,此工程将接收到消息并且生成静态页面。在此服务器上安装一个nginx做为访问静态资源的http服务器。
5.把商品数据放到缓存中,如何提高缓存的利用率
做商品数据的缓存时,因为商品的数据量很大,而且缓存是把数据保存到内存中,此时不可能把所有的商品数据都放到缓存中。所以需要设置商品数据缓存的有效期,当用户访问到非热点数据后,此数据放到缓存中,当缓存到期后就从缓存中删除,而且长时间不会添加到缓存。而热点数据一旦从缓存中删除会马上又添加到缓存。这样可以提高缓存的利用率,同时也减轻了数据库的压力。
6.如何实现缓存同步的
只要使用了缓存就涉及到缓存同步的问题。缓存同步其实就是当缓存的信息发生变化,也就是后台对缓存的数据进行增、删、改操作后,数据库中的数据发生了变化同时要把缓存中的数据对应删除即可。当页面再次请求数据时,缓存中不能命中就会从数据库中查询并且添加到缓存中,即实现了缓存同步。
7.如何处理数据量大、并发量高的搜索
如果要搜索的内容数据量很大并且并发量很高的情况下,一个solr服务是不能满足要求的,所以此时需要SolrCloud来解决。SolrCloud也就是solr的分布式解决方案。是zookeeper+solr实现的。
8.Activemq有几种消息通信方式
使用MQ中间件可以有两种通信方式queue和topic。Queue可以实现点到点之间的通信,可以有多个Producer也可以有多个Consumer,但是消息只能被一个Consumer接收,一旦消息被消费后就没有了。
Topic可以实现类似广播的通信方式,可以有多个Producer和多个Consumer,一旦有Producer发送消息后,此消息可以被所有Consumer接收。
本项目中,当后台系统对商品数据进行添加、删除、修改后,将会发送一个消息,此消息通过topic进行通信,有多个消费端,搜索系统会把索引库进行同步,商品的缓存数据会进行同步、商品详情页面的静态页面会重新生成。
9.集群环境下的登录问题(单点登录)
原理是不再使用tomcat提供的Session,而是使用redis来模拟Session,一旦用户登录后会生成一个token,类似于jsessionid的功能。访问redis获取用户信息时,key就是token,value就是用户信息。然后把token信息写入cookie中,并且实现cookie可以跨域访问。当需要对用户身份进行验证时,需要先从cookie中把token取出,然后根据token查询redis,来判断用户的登录状态。
10.购物车是如何实现的
当用户未登陆时,将购物车信息放到cookie中,并设置存活时间,即使关闭浏览器,购物车也不会消失,除非用户自己清理浏览器中的cookie。
当用户登陆时,将购物车信息放到Redis缓存中,下次登陆时,即使换了浏览器或电脑,购物车也不会消失。
11.如果换电脑,购物车是如何实现的
如果把购物车放到cookie中,更换电脑是不能看到购物车信息的。如果想更换设备实现购物车同,需要把购物车信息保存到redis中。
实现购车商品数据同步:
1、要求用户登录。
2、把购物车商品列表保存到数据库中。推荐使用redis。
3、Key:用户id,value:购物车商品列表。推荐使用hash,hash的field:商品id,value:商品信息。
4、在用户未登录情况下写cookie。当用户登录后,访问购物车列表时,
a) 把cookie中的数据同步到redis。
b) 把cookie中的数据删除
c) 展示购物车列表时以redis为准。
d) 如果redis中有数据cookie中也有数据,需要做数据合并。相同商品数量相加,不同商品添加一个新商品。
5、如果用户登录状态,展示购物车列表以redis为准。如果未登录,以cookie为准。
12.订单号是怎么生成
所以我们采用redis的incr命令来生成订单号,每次加一。由于redis是单线程的所以使用此命令不会出现重复的订单号,并且可读性好。 使用推特公司的工具类 snowfalke
13.秒杀抢购时库存是如何控制的
把商品的数量放到redis中。秒杀时使用decr命令对商品数量减一。如果不是负数说明抢到。一旦返回数值变为0说明商品已售完。
14.异常是如何处理
scssscssmixins我在我的日常scss项目中使用。包含各种有用的mixin用于各种事物,例如,在'rem'中生成font-size(代码片段)
pmp真的有用么?实际应用都有哪些
PMP(ProjectManagementProfessional)指项目管理专业人士资格认证。美国项目管理协会(PMI)举办的项目管理专业人员PMP认证考试在全球190多个国家和地区推广,是目前项目管理领域含金量最高的认证。在中国被称为继MBA,MPA之后的三... 查看详情
【敏捷实用工具】jira介绍以及使用方法
...的敏捷工具。不同的组织使用JIRA追踪不同的问题。JIRA的项目是根据你的企业组织需要定制的,是问题的集合。例如,一个JIRA项目可以是:一个软件研发项目一项市场推广活动一个技术服务/帮助台系统一个需求管理系统一个网站需... 查看详情
成为专业程序员路上有用的各种优秀资料神器及框架
目录资料篇技术站点必看书籍大牛博客GitHub篇工具篇平台工具常用工具第三方服务爬虫相关(好玩的工具)安全相关Web服务器性能/压力测试工具/负载均衡器大数据处理/数据分析/分布式工具Web前端语言篇ScalaJavaPythonSwift.NETC&C++其... 查看详情
项目介绍怎么写啊
做一份创业项目的介绍项目介绍写法如下:1、介绍项目的背景简单介绍下当前存在的一些问题,以及自己项目能解决哪些问题,哪些技术出现为自己项目的实现提供了可能。2、介绍自己项目的平台以及面向的用户群一个项目都... 查看详情
区块链项目的分类和共识机制介绍
从目前主流的区块链项目来看,区块链项目主要分为四类:①币类②平台类③应用类④资产代币化。 币类主要充当区块链资产领域的“交换媒介”,交换媒介指一般等价物,比如以前的黄金、银票等;平台项目类是... 查看详情
技术分享|jenkins持续集成体系介绍(代码片段)
...个广泛用于持续构建的可视化Web工具,持续构建包括项目的自动化编译、打包、分发部署。Jenkins可以很好的支持各种语言(比如:Java、C#、PHP等)的项目构建,也完全兼容Ant、Maven、Gradle等多种第三方构建工... 查看详情
kibana-介绍
...仪表板:图形分析功能使您能够发现Elasticsearch索引中的项目是如何相关的。您可以研究索引词汇之间的连接,并查看哪些连接最有意义。这在各种应用程序中都很有用,从欺诈检测到推荐引擎。例如,图形浏览可以帮助您发现... 查看详情
答辩技巧
...用技术分享,都是技术人,懂技术,懂前端-可以讲整个项目的架构、难点、解决问题的方式、代码的稳定性等,这样才能体现技术上的水平 内容进行分类-具有逻辑性全面。比如需要包括工作与成长、认识与思考、未来的规... 查看详情
springboot脚手架项目001__项目介绍技术介绍(代码片段)
SpringBoot、脚手架项目001——Spring的基础文章目录SpringBoot、脚手架项目001——Spring的基础SpringBoot是什么?作用——我们可以把这个项目作为脚手架什么是面向对象编程我们思考Spring框架去解决了一个什么问题呢后话spring全家... 查看详情
软件测试面试如何介绍项目?要做哪些技术准备?
测试人员在找工作中,基本都会碰到让介绍项目的这种面试题,如何正确介绍自己的项目?需要做哪些技术准备?今天这篇文章,围绕这些问题,跟大家一起聊一聊。关于介绍自己的项目,可以从以下... 查看详情
javascript各种-也许有用(代码片段)
jenkins各种触发方式介绍
...发构建后执行构建BuildperiodicallyBuildperiodically:周期进行项目构建(它不care源码是否发生变化),我的配置如下:02*** 查看详情
小程序项目介绍(代码片段)
项目介绍搜索页search效果需要完成的部分技术具体操作个人中心页user效果需要完成的部分技术意见反馈页面feedback效果需要完成的部分技术具体操作授权页面auth效果需要完成的部分结算页面pay效果需要完成的部分技术具体操作... 查看详情
小程序项目介绍(代码片段)
项目介绍商品详情页goods_detai效果需要完成的部分技术具体操作购物车页cart效果需要完成的部分技术具体操作收藏页面collect效果需要完成的部分技术具体操作订单页面order效果需要完成的部分技术具体操作总结商品详情页goods_det... 查看详情
项目中另外添加有用的文件:404
404.html:自定义找不到的文件样式robots.txt:搜索引擎访问网站的时候,会首先去查看根目录是否有名为robots的文件,告诉爬虫搜索程序什么文件可以查询,什么文件不能被查询humans.txt:介绍网站信息和团队的信息,可自由发挥,书... 查看详情
springcache简单介绍和使用(代码片段)
...ager (一)创建数据库和表(二)创建boot项目(三)使用Api1、@EnableCaching2、@CachePut3、@cacheable4、@CacheEvict三、使用redis作为cache一、简介SpringCache是一个框架,实现了基于注解的缓存功能ÿ... 查看详情
windowsserver有啥用处啊?
能介绍一些有用电脑知识吗?参考技术A这个是号称微软史上最强的操作系统,它的更新至少在2008年前不会推出,不过这个操作系统不适合普通家庭计算机用,因为“server”就是“服务”的意思,也就是服务器 参考技术B用windowsser... 查看详情