推荐小组内每个人以及感兴趣的读者关注这个公众号【芋道源码】,经常推送一些很不错的技术文章
人若无名,专心练剑
大牛支持:芋艿
本篇主要是onemal项目相关技术的一个简括,由于水平有限先简单的介绍一部分,供组内同学先简单的了解,
然后各自再去深入调研,在组内分享,我会把大家分享的内容整理成一系列完整的博文发布并附上作者
【包括我这个博客、CSDN,大家自己的博客;如果大家写的好,甚至有很大可能在 芋道源码 发表】
相信大家在接下来半年的沉淀和实践有很大的进步
目录
Spring Boot
快速使用Spring的一种手段
自动配置
约定大于配置
推荐书籍:
《Spring Boot实战》
《Spring Boot 编程思想》
Dubbo + zookeeper
dubbo : soa框架
zookeeper 作为dubbo的注册中心
服务提供方向注册中心注册服务,注册中心维护着服务的一组url
服务消费方订阅注册中心(刚好zk有watcher机制),
消费方就获取到服务提供方的URL(具体URL还由负载均衡策略决定)
关于dubbo服务在zk里存储细节大家可自行了解 (临时节点 or 持久节点?)
这里要区分一个概念:
nginx解决的负载均衡是外来流量打进我们的服务
dubbo解决的负载均衡是soa服务调用时进行的一种策略
dubbo大家肯定都不陌生
虽然阿里放弃了dubbo使用hsf,但是他的牛逼依然挡不住,业界还是很多公司使用的
也有的是自研框架,比如饿了么的pylon,之前在网易也是使用杭州研究院自研的soa框架
关于zk,可以看看我整理的几篇关于zk的文章,还是花了较长时间了解用心写的
包括zk的Zab协议,源码使用ant编译等
当时我是在电脑搞了三个centOS虚拟机,搭的zk集群,记得要在每个虚拟机上配serverid
我们手头里目前刚好有3台机器,也可以搭一些集群,熟悉下基本命令
zk是一个cp系统
而注册中心要求是一个ap系统,因此zk做注册中心不是非常合适 (CAP理论组内同学下来一定看,是分布式的核心理论)
当时在美团服务治理部实习,组里大牛就在调研重构注册中心,当时看一些文档一脸懵逼,真的一点看不懂,架构也很复杂
Mysql + Mybatis
mysql需要掌握的:
我认为的三大核心—-
1)会写sql语句
2)底层数据结构 + 索引技术 (索引技术往往伴随着底层数据结构)
3)执行计划 (根据执行计划进行sql的调整和优化)
我的水平也是半吊子的半吊子
mybatis就是操作数据库的一个框架,不需要我们费力的一个个用jdbc写sql,处理一大堆重复代码
mybatis vs hibernate
mybatis轻巧、灵活,自行写sql语句
hibernate比较笨重,配置映射关系,还有游离态、持久态等概念,还有hql语言,感觉整体较复杂
我记得我写过一篇文章就是专门对比两者的,
当时在学校还不知道mybatis,就学了hibernate,后来才知道mybatis
mybatis的源码,大家有兴趣以后找时间一起研读吗
其他:
分库分表理论也需要了解学习
这里推荐 芋艿 的一篇文章,非常详细,图文并茂
https://mp.weixin.qq.com/s/i2eXbU1xrqJY51ETIPs0dw
Redis 的诞生
新技术的出现必定是为了满足某一需求,任何技术都不是凭空产生的,
没有现实驱动,利益、成本、需求驱使的技术是没有意义的
比如:
NoSQL(Memcache、 Redis等)的出现是为了解决关系型数据库无法应对高并发访问带来的访问压力。
全文搜索引擎( Elasticsearch、 Solr)的出现是为了解决关系型数据库like搜索的低效的问题。
Hadoop的出现是为了解决传统文件系统无法应对海量数据存储和计算的问题。
redis核心:
1)五大数据结构
2)基本命令
3)集群模式 & 哨兵模式
@绍军 待学习文章:
http://www.iocoder.cn/Spring-Boot/Redis/?vip
MQ的选择
MQ三大核心场景:异步、解藕、削峰
在《分布式消息中间件实践》一书中,介绍了RabbitMQ、ActiveMQ、Kafka、RocketMQ,已经看完了
RabbitMQ、ActiveMQ、Kafka都实操过,RocketMQ还没有搭集群跑过,刚好借这次机会熟悉
据我了解ActiveMQ的使用应该少了,但毕竟也是Apache的,目前比较活跃的是RabbitMQ、RocketMQ
Kafka主要是用于大数据相关
Kafka的性能要远远高于其他三,支持集群,基于发布订阅,零拷贝技术,批处理,高性能io,缓存等
当时在网易,新闻推送就是用的2层kafka
RabbitMQ有非常灵活的路由协议,客户端也支持很多种语言
饿了么是根据RabbitMQ使用 go开发的类似RabbitMQ MaxQ,毕竟Erlang太小众
京东也开发的JMQ
阿里用的RocketMQ,已经开源,跟着大哥走肯定没错
项目中选用了RocketMQ
我们看到什么MQ都基本以JMS规范为标准
上图中有个nameServer,存储一些元信息,可以理解成注册中心
再具体的技术细节还需要 @李豪 同学调研分享给大家,搭建RocketMQ集群,跑起来,用基本api走一遍
nginx tengine
这一部分是我的活,
nginx我已经看了一部分了,感觉挺牛逼的
一般人我不告诉他,我看了一篇 芋艿 的文章 nginx是什么?能干嘛?
核心概念:反向代理 负载均衡
tengine是阿里的开源项目,基于nginx开发的,添加了一些功能
我刚好可以看看内部的一些文档和ata,到时候和大家做些分享
等我先搞一搞~
定时任务
实现方式:
1)TimerTask
2)ScheduledExecutorService (线程池)
3)Quartz
4)@Scheduled (Sring注解)
这些定时任务的底层都是通过thread.sleep 实现的=-=
cron表达式:
在线转换
XXL-job
基于Quartz的分布式任务调度平台
以集群的方式执行分片任务
每个公司都应该有一个这样的平台
以管理平台手动配置的形式减小业务和定时任务的耦合,降低学习成本
平台搭建 @铁灰 相信自己哇,老铁。。。
https://www.cnblogs.com/ysocean/p/10541151.html
写到这里感觉身体被掏空
end…
等我学习学习再来写
转载请注明:汪明鑫的个人博客 » onemall电商项目-技术简括
说点什么
1 评论 在 "onemall电商项目-技术简括"
鑫爷真滴强大!