关于soul:新型社交平台Soul凭借元宇宙新奇玩法获年轻人青睐

当传统社交平台还在强调“颜值即正义”的社交玩法时,致力于“让全天下没有孤单的人”的Soul另辟蹊径,打造属于年轻人的社交元宇宙,提倡基于趣味图谱而“不看脸”的“无压力社交”,迅速捕捉了用户的心。 在Soul所打造的元宇宙中,不反对“颜值社交”,所以不激励用户上传真人头像,只能用平台的捏脸零碎为本人发明形象。“超萌捏脸”游戏模式的体验,能够让用户自发创作个性化头像作为本人独特的身份标识。这一玩法撇除了事实烦扰因素,让用户能够无压力地表白本人的爱好与观点,打造了一个满足精力需要、有沉迷感的社交空间。 但想要捏出一个合乎本人情意的头像,对于大多数“手残党”来说,并不是一件简略的事。于是,“捏脸师”的职业应运而生。一部分用户申请成为“捏脸师”后,其创作的头像便能够在平台共性商城中上架,当其余用户购买后,创作者即可取得支出。共性商城于去年6月底上线,到去年底时,有报道显示,平台上有创作者,靠着“捏脸”曾经月入近5万。 基于“捏脸”这一设定,人气社交平台Soul在两年多以前就上线了“脸基尼”视频匹配性能。该AR性能通过开发定制的Avatar头套,让年轻人在抉择了本人的脸基尼形象后,在挡脸的状况下出镜与匹配者交换,聊天过程中被零碎捕捉到笑容能够减少好感度。这岂但减少了Soul元宇宙靠近于事实世界的沉迷感,还最大限度升高了用户在视频聊天时因内敛的性情和其余不自信带来的心理门槛。 为了让社交更有意思,Soul还在情人节策动了颇具元宇宙特点的“咱们为什么在一起”系列流动,以多种形式助力年轻人找到趣味相投的人,拥抱人生奇遇。通过对年老群体长期深度的钻研洞察,Soul更加精准地探知年轻人的社交爱好,降级了“奇遇铃”的性能,可能更便当地聚焦单方的独特趣味,触发美妙相遇,为年轻人的网络社交开拓了更宽敞的通道,也让用户更便捷地在趣味社交中播种更多高兴。对于大多数用户来说,这样的产品性能应用体验,也更能体现Soul所打造的元宇宙实在、和煦、乏味的气氛。 此外,用户还可在广场浏览他人不违心发在其余社交账号的霎时情绪,在群聊派对中开启一场场酣畅淋漓的多人语音聊天,在Soul狼人、爆弹喵等多种多样的性能场景里,与意识的搭档互动、游玩,在独特体验中积淀深度社交关系。 随着越来越多用户的退出,Soul也在社交畛域一直破局,突显出本身弱小的发展潜力。期待后续Soul能一直突破传统的社交限度,为用户提供趣味社交体验,在趣味社交这一赛道上领有长久翻新生机。

May 10, 2023 · 1 min · jiezi

关于Soul:Soul源码阅读10模拟集群部署

指标简略模仿一下 soul 网关的集群部署(采纳 webscoket 同步形式)IDEA启动多个我的项目批改我的项目application.yml中的端口配置server.port=''批改 idea 启动配置,勾选Allow parallel run,容许并行启动 用以上形式批改soul-admin端口配置,启动两个soul-admin 在soul-bootstrap的application.yml配置方才启动的soul-admin的 url soul: sync: websocket : urls: ws://localhost:9095/websocket,ws://localhost:9096/websocket别离启动两个soul-bootstrap、soul-examples-http 测试启动的两个soul网关,均拜访胜利 至此,soul 网关启动完结。 Nginx 装置部署本地环境是Windows,解压即可 批改装置目录下 conf 目录下的配置文件 nginx.conf,简略配置一下,批改两处: 新增集群配置新增代理门路#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; #---------------1.新增集群配置------------------------------- upstream soul { # 能够通过批改weight=10的值来设置权重 server 127.0.0.1:9195 weight=10; server 127.0.0.1:9196 weight=10; } server { listen 80; #Nginx的监听端口,默认为80 server_name localhost; #Nginx的监听的主机名 #charset koi8-r; #access_log logs/host.access.log main; location / { #---------------2.新增代理门路------------------------------- #代理门路和集群名称(upstream soul{})须要保持一致 proxy_pass http://soul; proxy_redirect default; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } 省略... }}在Nginx装置的目录下,启动Nginx ...

January 25, 2021 · 1 min · jiezi

关于Soul:Soul源码阅读09数据同步之nacos

指标soul nacos 形式数据同步原理及源码剖析上一篇咱们对Soul网关的 http长轮询 数据同步形式做了简略的剖析,理解了一下 http长轮询 同步的根本流程。接下来咱们看一下Soul网关的nacos 数据同步形式。 Soul网关开启 nacos 同步: soul-bootstrap新增如下依赖: <!--soul data sync start use nacos--> <dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-sync-data-nacos</artifactId> <version>2.2.1</version> </dependency>application.yml增加相干配置 soul : sync: nacos: url: localhost:8848 namespace: 1c10d748-af86-43b9-8265-75f487d20c6c acm: enabled: false endpoint: acm.aliyun.com namespace: accessKey: secretKey: #url: 配置成你的nacos地址,集群环境请应用(,)分隔。 # 其余参数配置,请参考naocs官网。soul-admin 配置,或在 soul-admin 启动参数中设置 --soul.sync.zookeeper='',而后重启服务 soul : sync: nacos: url: localhost:8848 namespace: 1c10d748-af86-43b9-8265-75f487d20c6c acm: enabled: false endpoint: acm.aliyun.com namespace: accessKey: secretKey:源码剖析soul-admin 数据同步soul-admin 的数据变更告诉,Soul 网关的四种数据同步形式webscoket、zookeeper、http长轮询、nacos原理都是一样的,只是不同的数据同步配置对应的事件处理器不一样,之前zookeeper数据同步已做了剖析,这里就不在赘述。。 nacos 监听器源码剖析同之前的剖析的同步形式相似,NacosDataChangedListener类为DataChangedListener接口的具体实现,以批改Selector为例: ...

January 23, 2021 · 3 min · jiezi

关于Soul:Soul源码阅读08数据同步之http长轮询

指标soul http长轮询 形式数据同步原理及源码剖析上一篇咱们对Soul网关的 zookeeper 数据同步形式做了简略的剖析,理解了一下 zookeeper 同步的根本流程。接下来咱们看一下Soul网关的http长轮询数据同步形式。 同步原理Soul网关 http同步原理: Soul 借鉴了 Apollo、Nacos 的设计思维,取其精华,本人实现了 http 长轮询数据同步性能。留神,这里并非传统的 Ajax长轮询。http 长轮询机制如下图所示: soul-web 网关申请 soul-admin 的配置服务,读取超时工夫为 90s,意味着网关层申请配置服务最多会期待 90s,这样便于 admin 配置服务及时响应变更数据,从而实现准实时推送。 soul-web的 HTTP 申请达到 sou-admin 之后,并非立马响应数据,而是利用 Servlet3.0 的异步机制,将长轮询申请工作扔到 BlocingQueue 中,并且开启调度工作,60s 后执行。这样做的目标是 60s 后将该长轮询申请移除队列,即使是这段时间内没有产生配置数据变更,也得让网关晓得。而且网关申请配置服务时,也有 90s 的超时工夫。 Soul网关开启 http长轮询 同步: soul-bootstrap新增如下依赖: <!--soul data sync start use http--><dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-sync-data-http</artifactId> <version>2.2.1</version></dependency>application.yml增加相干配置 soul : sync: http: url: http://localhost:9095 #url: 配置成你的zk地址,集群环境请应用(,)分隔soul-admin 配置,或在 soul-admin 启动参数中设置 --soul.sync.http.enabled=true,而后重启服务 sync: http: enabled: true源码剖析soul-admin 数据同步soul-admin 的数据变更告诉,Soul 网关的三种数据同步形式webscoket、zookeeper、http长轮询原理都是一样的,只是不同的数据同步配置对应的事件处理器不一样,上一篇zookeeper数据同步已做了剖析,这里就不在赘述。 ...

January 23, 2021 · 4 min · jiezi

关于Soul:Soul源码阅读07数据同步之zookeeper

指标soul zookeeper 形式数据同步原理及源码剖析上一篇咱们对Soul网关的 webscoket 数据同步形式做了简略的剖析,理解了一下 websocket 同步的根本流程。接下来咱们看一下Soul网关的zookeeper数据同步形式。 同步原理Soul网关 zookeeper 同步原理: zookeeper 同步次要是依赖 zookeeper 的 watch 机制,soul-web 会监听配置的节点,soul-admin 在启动的时候,会将数据全量写入 zookeeper,后续数据产生变更时,会增量更新 zookeeper 的节点,与此同时,soul-web 会监听配置信息的节点,一旦有信息变更时,会更新本地缓存。如更新了Selector的数据同步流程图: Soul网关开启 zookeeper 同步: soul-bootstrap新增如下依赖: <!--soul data sync start use zookeeper--><dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-sync-data-zookeeper</artifactId> <version>2.2.1</version></dependency>application.yml增加相干配置 soul : sync: zookeeper: url: localhost:2181 sessionTimeout: 5000 connectionTimeout: 2000 #url: 配置成你的zk地址,集群环境请应用(,)分隔soul-admin 配置,或在 soul-admin 启动参数中设置 --soul.sync.zookeeper='',而后重启服务 soul: sync: zookeeper: url: localhost:2181 sessionTimeout: 5000 connectionTimeout: 2000源码剖析soul-admin 数据同步soul-admin 在用户产生数据变更之后,会通过 spring 的 ApplicationEventPublisher 收回数据变更告诉,由 DataChangedEventDispatcher 解决该变更告诉,而后依据配置的 zookeeper同步策略,将配置发送给对应的事件处理器。 ...

January 23, 2021 · 4 min · jiezi

关于Soul:Soul源码阅读06数据同步之websocket

指标soul websocket形式数据同步原理及源码剖析数据同步起因为什么要进行数据同步那? 网关是流量申请的入口,在微服务架构中承当了十分重要的角色。在应用网关的过程中,为了满足业务诉求,常常须要变更配置,比方流控规定、路由规定等等。因而,网关动静配置是保障网关高可用的重要因素。Soul 的插件全都是热插拔的,并且所有插件的选择器、规定都是动静配置,立刻失效,不须要重启服务。为了提供更高的响应速度,soul 所有的配置都缓存在 JVM 的 Hashmap 中,每次申请都走的本地缓存,速度十分快。为了批改的配置能过及时的更新到 JVM 的本地缓存中,因而须要进行数据同步。 Soul 反对三种数据同步形式: zookeeper同步websocket同步http长轮询原理剖析Soul官网文档 对于数据同步的介绍: Soul 网关在启动时,会从配置服务同步配置数据,反对推拉模式获取配置变更信息,并且更新本地缓存。而管理员在治理后盾,变更用户、规定、插件、流量配置,通过推拉模式将变更信息同步给 Soul 网关,具体是 push 模式,还是 pull 模式取决于配置。 同步流程图: 本篇文章抉择websocket同步形式进行剖析 websocket同步什么是websocket? WebSocket是HTML5新增的协定,它的目标是在浏览器和服务器之间建设一个不受限的双向通信的通道,比如说,服务器能够在任意时刻发送音讯给浏览器。Soul网关 websocket 同步原理: Soul网关与 admin 建设好 websocket 连贯时,admin 会推送一次全量数据,后续如果配置数据产生变更,则将增量数据通过 websocket 被动推送给 soul-web。 Soul网关开启 websocket 同步: soul-bootstrap新增如下依赖: <!--soul data sync start use websocket--><dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-sync-data-websocket</artifactId> <version>2.2.1</version></dependency>application.yml增加相干配置 soul : sync: websocket : urls: ws://localhost:9095/websocketsoul-admin 配置,或在 soul-admin 启动参数中设置 --soul.sync.websocket='',而后重启服务 soul: sync: websocket: enabled: true源码剖析soul-admin数据同步soul-admin 在用户产生数据变更之后,会通过 spring 的 ApplicationEventPublisher 收回数据变更告诉,由 DataChangedEventDispatcher 解决该变更告诉,而后依据配置的 weboscket同步策略,将配置发送给对应的事件处理器。 ...

January 23, 2021 · 5 min · jiezi

关于Soul:Soul源码阅读05springcloud插件初体验

soul 网关接入 springCloud 利用参考官网文档:https://dromara.org/zh-cn/doc... 引入相干依赖 soul-bootstrap新增如下依赖: <!-- soul springCloud plugin start--> <dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-plugin-springcloud</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-commons</artifactId> <version>2.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> <version>2.2.0.RELEASE</version> </dependency> <!--soul springCloud plugin start end--> <!-- springCloud if you config register center is nacos please dependency this--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.0.RELEASE</version> </dependency>应用 nacos 作为 springCloud的注册核心,application.yml新增如下配置: spring: main: allow-bean-definition-overriding: true application: name: soul-bootstrap cloud: nacos: discovery: server-addr: 127.0.0.1:8848soul-examples-springcloud新增如下依赖: <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.0.RELEASE</version></dependency>application.yml增加相干配置 ...

January 23, 2021 · 1 min · jiezi

关于SegmentFault:Soul源码阅读04sofa插件初体验

指标运行examples上面的 sofa-rpc 服务学习文档,联合 sofa 插件,发动 http 申请 soul 网关,体验 sofa 代理soul 网关接入 sofa 利用参考官网文档:https://dromara.org/zh-cn/doc... 引入相干依赖 soul-bootstrap新增如下依赖: <dependency> <groupId>com.alipay.sofa</groupId> <artifactId>sofa-rpc-all</artifactId> <version>5.7.6</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-client</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-plugin-sofa</artifactId> <version>2.2.1</version> </dependency>soul-examples-sofa新增如下依赖: <dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-client-sofa</artifactId> <version>2.2.1</version> <exclusions> <exclusion> <artifactId>guava</artifactId> <groupId>com.google.guava</groupId> </exclusion> </exclusions> </dependency>application.yml增加相干配置 soul: sofa: adminUrl: http://localhost:9095 contextPath: /sofa appName: sofa # adminUrl: 为你启动的 soul-admin 我的项目的ip + 端口,留神要加 http:// # contextPath: 为你的这个我的项目在soul网关的路由前缀,比方/order ,/product 等等,网关会依据你的这个前 缀来进行路由. # appName:你的利用名称,不配置的话,会默认取 sofa 配置中application 中的名称sofa 插件设置soul-admin 插件治理中,sofa 插件设置为开启 ...

January 19, 2021 · 2 min · jiezi

关于SegmentFault:Soul源码阅读02devide插件负载均衡权重分析

指标运行 examples上面的 http 服务学习文档,联合 divde 插件,发动 http 申请 soul 网关,体验 http 代理http 服务的相干依赖及配置引入 http 的代理插件在 soul-bootstrap 工程下的 pom.xml下引入如下依赖 <!--if you use http proxy start this--> <dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-plugin-divide</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-plugin-httpclient</artifactId> <version>${project.version}</version> </dependency>引入 soul 客户端(针对SpringBoot用户):在 soul-examples-http(你本人的实在服务) pom.xml 新增如下依赖: <dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-client-springmvc</artifactId> <version>${last.version}</version> </dependency>增加客户端接入配置:在yml中新增如下配置 : soul: http: adminUrl: http://localhost:9095 port: 8188 contextPath: /myhttp appName: http full: false # adminUrl: 为你启动的 soul-admin 我的项目的ip + 端口,留神要加http:// # port: 你本我的项目的启动端口 # contextPath: 为你的这个mvc我的项目在soul网关的路由前缀,比方/order ,/product 等等,网关会依据你的这个前缀来进行路由 # appName:你的利用名称,不配置的话,会默认取 `spring.application.name` 的值 # full: 设置true 代表代理你的整个服务,false示意代理你其中某几个controllerController中增加@SoulSpringMvcClient注解将注解 Controller 类下面,外面的path属性则为前缀,如果含有 /** 代表你的整个接口须要被网关代理。 ...

January 19, 2021 · 3 min · jiezi