1.cdn:内容网络分发。2.小视频的功能的开发需要考虑的是:`存储`和`加载速度` 。3.FastDFS是用C语言编写的一款开源的`轻量级分布式文件系统`。4.存储服务器每一组至少要有两台机器。5.FastDFS架构:6.每次送货(上传文件)都得问仓库管理员(Tracker Server):7.FastDFS的存储服务器默认集成了nignx8.FastDFS会自动生成上传文件的文件名:9.文件元属性:文件的基本属性,创建时间啥的。10.FastDFS有两个内置对象:11.如何实现异步调用:12.分布式事务,只要求最终一致性。可以运行延迟一会儿,一般不会回滚。13.Spring异步处理注解:14.@Async默认线程池:15.定时任务框架:SpringTask16.如何保证各个CDN服务器数据一致性,mq嘛。
1.cdn:内容网络分发。全国多个服务器,就近原则来访问。
2.小视频的功能的开发需要考虑的是:存储和加载速度 。对于存储而言,我们选择自己搭建分布式存储系统FastDFS进行存储对于加载速度,除了提升服务器带宽外可以通过CDN的方式进行加速 3.FastDFS是用C语言编写的一款开源的轻量级分布式文件系统。
它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等。
特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
4.存储服务器每一组至少要有两台机器。 5.FastDFS架构:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FD0LSNgK-1648046364479)(问题2.assets/1648044287425.png)]
FastDFS由客户端(Client)、 跟踪服务器(Tracker Server)、 存储服务器(Storage Server)构成。
客户端: 业务请求的发起方,与跟踪器服务器或存储节点进行数据交互。跟踪器: 作用是负载均衡和调度,通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务。存储器: 作用是文件存储,客户端上传的文件最终存储在Storage服务器上,存储节点中的服务器均可以随时增加或下线而不会影响线上服务。 6.每次送货(上传文件)都得问仓库管理员(Tracker Server):
每次都得问。因为不知道那个仓库有存储空间。
7.FastDFS的存储服务器默认集成了nignxweb-server-url: http://192.168.136.160:8888/ # nginx访问路径8.FastDFS会自动生成上传文件的文件名:
上传的时候不需要上传文件名,只传文件拓展名
9.文件元属性:文件的基本属性,创建时间啥的。 10.FastDFS有两个内置对象:@Autowired
private FastFileStorageClient client;
@Autowired
private FdfsWebServer webServer;
// 上传文件到fastDFS
@Test
public void test01()throws Exception{
File file = new File("文件路径");
FileInputStream fis = new FileInputStream(file);
StorePath storePath = client.uploadFile(fis, file.length(), FileUtil.extName(file), null);
System.out.println(webServer.getWebServerUrl() + storePath.getFullPath());
}
11.如何实现异步调用:
1)同一个工程里,用多线程。
2)多个工程(微服务和分布式),用消息队列。
12.分布式事务,只要求最终一致性。可以运行延迟一会儿,一般不会回滚。 13.Spring异步处理注解:@Async: Spring提供的异步处理注解,被此注解标注的方法会在新的线程中执行,其实就相当于我们自己new Thread。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pRNKtf8H-1648046364481)(…/…/…/A_%E9%BB%91%E9%A9%AC%E8%AF%BE%E5%A0%82%E5%BD%95%E5%B1%8F%E8%B5%84%E6%96%99/173%E6%9C%9F%E5%B0%B1%E4%B8%9A%E7%8F%AD%E8%B5%84%E6%96%99/4.173%E5%88%86%E5%B8%83%E5%BC%8F(%E8%A7%86%E9%A2%91%E7%AC%94%E8%AE%B0)]-%E4%BA%8E%E5%B8%85%E8%80%81%E5%B8%88/tanhua08-%E5%B0%8F%E8%A7%86%E9%A2%91&%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1/%E8%AE%B2%E4%B9%89/assets/image-20220219151415680.png)
14.@Async默认线程池:1)默认情况下@Async注解使用的是SimpleAsyncTaskExecuor,但是这个不是真的线程池,这个类不会重用线程,每次调用都会创建一个新线程。
2)SyncTaskExecutor:这个类没有实现异步调用,只是一个同步操作。只适用于不需要多线程的地方。
3)ConcurrentTaskExecutor: Executor的适配类,不推荐使用。如果ThreadPoolTaskExecutor不满足要求时,才用考虑使用这个类。
4)ThreadPoolTaskScheduler:可以使用cron表达式。
ThreadPoolTaskExecutor : 最常使用,【推荐】。其实质是对java.util.concurrent.ThreadPoolExecutor的包装。
原文链接:https://blog.csdn.net/pxy7896/article/details/115672727
1)在主类上开启定时任务:@EnableScheduling // 开启定时任务注解支持
2)开发定时任务逻辑–要求该方法:公共的、无参、无返回值
// 指定时间规则,要求:public void xx(){}
// @Scheduled(fixedDelay=5000)
@Scheduled(cron = "0/5 * * * * ?")
public void sout() {
System.out.println(DateUtil.formatDateTime(new Date()));
}
16.如何保证各个CDN服务器数据一致性,mq嘛。
分发服务系统:其基本的工作单元就是各个Cache服务器。负责直接响应用户请求,将内容快速分发到用户;同时还负责内容更新,保证和源站内容的同步。



