热门话题白皮书HR资料
一套流行的社交网站的完整架构方案
2024.03.04


要想做一个流行且完整的社交网站,必备的核心功能是:发布帖子、发送站内信、赞踩、关注、通知、搜索、排行榜等功能。


具体的架构方案是:


虽然JavaEE的标准,最早是由SUN制定的。但是由于JavaEE的核心—EJB非常的复杂、难用,以至于它早已被市场所淘汰。所以,目前市场是基于Java语言做Web开发的主流方案是Spring,Spring框架已经成为了事实上的行业标准了。



01

基础功能


社交网站的基础功能,如帖子、站内信、注册、登录等,通常采用SSM框架实现,即Spring + Spring MVC + MyBatis。


其中,Spring框架提供了IoC与AOP两种方式,来管理应用中的Bean,并进一步可以整合其他的框架,是整个应用的基石。


Spring MVC以轻量级的方式解决了前后端交互的问题,简单实用。对于MVC中的V,也就是视图,我们已经抛弃了JSP这种前后端高度耦合的方案,而采用Thymeleaf模板引擎。Thymeleaf倡导自然模板,即以HTML文件为模板。这样做的好处是显而易见的,你不需要单独学一套新的语法了,毕竟HTML是所有程序员都懂的。


MyBatis是一套轻量级的数据访问层框架,它封装了数据访问过程中固定的逻辑,又允许开发者直接编写SQL、不失灵活性,是一个简单实用的解决方案。


另外,目前更为流行的做法是,基于Spring Boot开发SSM应用。Spring Boot不负责解决业务问题,它用于简化Spring开发。在Spring Boot的帮助下,我们可以省略那些繁琐的导包、配置,可以大大的提高自身的编程效率。



02

高并发的功能


赞、踩、关注这样的功能,是访问频率很高的功能,需要重点考虑性能问题。为了提升性能,不让网站在高峰时段挂掉,通常采用NoSQL数据库来存储这些数据,而Redis往往是NoSQL数据库中的首选方案。


将赞、踩、关注这些数据,以键值对的方式存入Redis,不但访问起来方便,而且由于数据存于内存中,访问的效率是极高的。另外,Redis支持RDB和AOF两种持久化方案,可以适时的将内存中的数据,转存到硬盘上,从而可以保证数据的安全性。


通知功能,也是网站的高频功能。当热点事件发生的时候,网站需要通知的人群十分的庞大,容易造成网站的拥堵甚至宕机。所以,通常我们会采用消息队列进行异步的通知。虽然这样做会造成通知有一定的延迟,但是它会削减网站的峰值,对网站的性能有极大的提升。消息队列服务器有很多,推荐大家使用Kafka,因为Kafka是目前性能最好的消息队列服务器,具备每秒TB级的吞吐能力。


搜索功能,也是访问频率很高的功能,并且搜索时要支持中文分词,这都是传统的关系型数据库不具备的能力。目前最流行的搜索引擎是Elasticsearch,它采用分布式架构方案,具备实时检索的能力,性能极为出色。



03

安全功能


除此以外,网站在运营的过程中,还要保证安全性。在这方面,Spring Security和Spring Actuator是最值得我们去关注的。


Spring Security可以很好的控制用户的访问权限,还能避免CSRC攻击,基于Spring Security开发权限模块又极为简单,只需要做一些基本的配置即可,对业务代码具有极低的侵入性,是一套十分优秀的解决方案。


Spring Actuator可以在网站上线后,提供多个端点来监控网站的运营状况,从而找出网站的瓶颈、漏洞,是一套十分有效的运维工具。




基于以上理论,牛客做了一个大胆的决策——以讨论区为原型,应用以上列举框架和技术,完整的复制了一份牛客讨论区。



这就是我们最新上线的2019版牛客高级项目课——社交型网站:牛客讨论区



1.项目截图如下




2.项目中用到的技术框架


  1. Spring Boot 、SSM(Spring、Spring MVC、MyBatis)

  2. Redis、Kafka、Elasticsearch

  3. Spring Security、Spring Actuator



3.做项目之前你需要具备


  • 熟悉Java基础语法、数据库SQL语法

  • 了解HTML、CSS、JavaScript



4.做完项目后你能获得


  1. 学会主流的web开发技术和框架

  2. 积累一个真实的web项目的开发经验

  3. 掌握面试热点及答题策略



5.带你做项目并提供答疑解惑的老师是



李洪鹤

牛客网专职讲师


曾任用友软件设计师、达内集团金牌讲师、粉笔科技IT课程研发总监。拥有7年开发实战经验,5年教学经验。



6.项目要分这些步骤来完成


▼滑动查看全部课程目录▼





做完这个项目,以后你就可以跟别人说:我是做过牛客网讨论区的人!


那么这么好的项目要如何获得呢?


前方高能预告

福利来了!!!


由于课程刚刚上线,还处于内测阶段,我们一共设置了30个内测名额,课程上线一天,已经售出20个,现仅剩余10个内测名额了。



 参与内测 

 会有哪些福利?



1 项目课买一赠一


叶神高级项目课+2019最新高级项目课


1 左神算法录播课


历年校招算法真题讲解(视频+课件+最优解代码)


1 牛客网独家求职资料


包括面试通过技巧和名企面试常考题目汇总



点击立抢内测名额

▲注:报名成功的同学加群后私信群主要内测福利哦~~~




点击阅读原文,查看更多项目详情