享受与一卡通相同优惠,拒绝网聊

来源:http://www.027kmyj.com 作者:互联网 人气:140 发布时间:2019-10-25
摘要:原标题:先乘车,后付费!明日起 通州人微信扫码即可乘车享受与一卡通相同优惠 原标题:陌生人社交小程序「拼拼碰碰」:拒绝网聊,直接奔现 原标题:基于Redis实现分布式锁-Red

原标题:先乘车,后付费!明日起 通州人微信扫码即可乘车 享受与一卡通相同优惠

原标题:陌生人社交小程序「拼拼碰碰」:拒绝网聊,直接奔现

原标题:基于Redis实现分布式锁-Redisson使用及源码分析【面试+工作】

坐公交时忘带一卡通或零钱怎么办?明天起,“北京一卡通”微信小程序将正式上线试运行!

陌生人社交一直是创业者与资本关注的热门赛道之一,在36氪看来,绝大多数陌生人社交产品已经把“连接”的效率提升到了一个极高的水准。但在完成连接之后,用户之间进一步“认识”的效率依然低下。常用的社区话题运营、个人主页等方式并不能解决用户想要直观且高效的了解对方的诉求。

基于Redis实现分布式锁-Redisson使用及源码分析【面试+工作】

市民仅需通过北京一卡通微信小程序开通“电子卡”业务,即可体验微信扫码乘车的便捷服务,并享受与一卡通普通卡相同的乘车优惠。

那么从线上到线下会否是一个可行的模式?中间产生的安全隐患如何解决?

在分布式场景下,有很多种情况都需要实现最终一致性。在设计远程上下文的领域事件的时候,为了保证最终一致性,在通过领域事件进行通讯的方式中,可以共享存储(领域模型和消息的持久化数据源),或者做全局XA事务(两阶段提交,数据源可分开),也可以借助消息中间件(消费者处理需要能幂等)。通过Observer模式来发布领域事件可以提供很好的高并发性能,并且事件存储也能追溯更小粒度的事件数据,使各个应用系统拥有更好的自治性。

图片 1

图片 2

本文主要探讨另外一种实现分布式最终一致性的解决方案——采用分布式锁。基于分布式锁的解决方案,比如zookeeper,redis都是相较于持久化(如利用InnoDB行锁,或事务,或version乐观锁)方案提供了高可用性,并且支持丰富化的使用场景。 本文通过Java版本的redis分布式锁开源框架——Redisson来解析一下实现分布式锁的思路。

目前,通州、昌平、顺义、密云、大兴、平谷六个区的所有500余条公交线路、共计5000余量公交车均已支持该项应用。年底前,市域公交也将陆续接入上线这项新功能。

「拼拼碰碰」是一个基于微信小程序的陌生人社交平台,创始人朱皓贤对自身的定位是一家陌生人交友O2O平台。拼拼碰碰的 slogon 是“让更多互感兴趣的人在现实中真实地认识”,简而言之,他们认为面对面的交流不能被技术取代,在通过线上完成了高效的连接后,下一步不是“网聊”,而是直接“奔现”。

分布式锁的使用场景

北京一卡通微信小程序电子卡的最大特点在于“无须下载APP、无需进行预充值操作”,所有智能手机用户均可在线办理。

朱皓贤引用了 YC 合伙人 Paul Graham 的一句话,"It's hard to say exactly what is about face-to-face contact that makes deals happen, but whatever it is, it hasn't yet been duplicated by technology."(科技日新月异,人性更古不变,只有现实中的交流才能最高效地认识并建立人与人之间的关系与信任)

如果是不跨限界上下文的情况,跟本地领域服务相关的数据一致性,尽量还是用事务来保证。但也有些无法用事务或者乐观锁来处理的情况,这些情况大多是对于一个共享型的数据源,有并发写操作的场景,但又不是对于单一领域的操作。

图片 3

他表示,拼拼碰碰的产品形态更像是介于严肃相亲与线上交友之间,在实现高效连接后,由平台介入,安排线下会面,具体流程如下:

举个例子,还是用租书来比喻,A和B两个人都来租书,在查看图书的时候,发现自己想要看的书《大设计》库存仅剩一本。书店系统中,书作为一种商品,是在商品系统中,以Item表示出租商品的领域模型,同时每一笔交易都会产生一个订单,Order是在订单系统(交易限界上下文)中的领域模型。这里假设先不考虑跨系统通信的问题,也暂时不考虑支付环节,但是我们需要保证A,B两个人不会都对于《大设计》产生订单就可以,也就是其中一个人是可以成功下单,另外一个人只要提示库存已没即可。此时,书的库存就是一种共享的分布式资源,下订单,减库存就是一个需要保证一致性的写操作。但又因为两个操作不能在同一个本地事务,或者说,不共享持久化的数据源的情况,这时候就可以考虑用分布式锁来实现。本例子中,就需要对于共享资源——书的库存进行加锁,至于锁的key可以结合领域模型的唯一标识,如itemId,以及操作类型(如操作类型是RENT的)设计一个待加锁的资源标识。当然,这里还有一个并发性能的问题,如果是个库存很多的秒杀类型的业务,那么就不能单纯在itemId 加类型加锁,还需要设计排队队列以及合理的调度算法,防止超卖等等,那些就是题外话了。本文只是将这个场景作为一个切入点,具体怎么设计锁,什么场景用还要结合业务。

想要体验这一便捷服务的乘客,仅需通过微信小程序搜索“北京一卡通”,按提示开通“电子卡”功能,即可轻松享受微信扫码乘车的智慧便利。该项业务的开通不收取任何费用,且乘车过程采用“先乘车,后付费”模式。

  • 填写资料,包括个人基本信息、标签、兴趣爱好、自我介绍等。
  • 填写自己的目的(新朋友、恋爱对象、结婚对象)、方便线下见面的时间,见面时想聊什么,以及见面的形式。目前平台上主要以 2 对 2 为主,即会将两组匹配的嘉宾凑在一起。
  • 填完所有资料后,用户可以选择等待被邀请约会,也可以在平台每天推荐的 8 位潜在约会嘉宾中主动邀约。
  • 无论是男方主动邀约还是女方主动邀约,最终都由女方选择见面的地点,如果女方不介意,平台会将约会地点定在如咖啡厅之类的开放公共空间。
  • 成功匹配后,平台会在碰面前 3 小时前开放聊天室(目前是微信群),方便碰面的联络。
  • 整个流程中都会有一名平台方的运营人员参与线下小聚的落地。

领域服务概念

需要注意的是,由于北京公共交通实行分段计价,乘客通过电子卡二维码乘车时,和普通一卡通一样上下车均需要扫码或刷卡。

图片 4

借用《Implementing Domain-driven Design》里面的对于领域服务的定义。领域的某个操作过程或转换过程不是实体或值对象的职责时,应该将操作放在一个单独的接口中,即领域服务,并且要和通用语言保持一致。这里的非实体或值对象操作会有很多种情况,比如某个操作需要对多个领域对象操作,输出一个值对象。在分层的架构中,有点类似于Manager。但是如果过渡抽象manager就会出现贫血,所以还需要确保领域服务是无状态的,并且做好和贫血模型的权衡。可能大多数情况,领域服务的参数都是比实际的领域模型小的,只有些关键属性的值对象。如果服务只操作领域的实体或值对象,则可以考虑下放到domain model中操作。

图片 5

小程序介绍页面

前面提到了Manager,但是很多应用中都会把Manager抽象成接口的形式,但大多数情况其实完全没有必要,可以通过服务Factory的方式解耦,或者用Spring的@Service注解来注入真正的服务实现类。对于一些简单的领域操作,还可以抽象一个迷你层,这个迷你层也可以称作是领域服务,只不过是无状态,无事务,安全的一个抽象层。

为确保扫码成功,乘客在使用时需注意将手机二维码对准公交POS机的扫码区,保持约5厘米距离,当机具屏幕显示“扫码成功”后则表示交易完成。

在体验完整个产品后的一个直观感受是:拼拼碰碰以女性的体验与需求为导向,注重安全与隐私; 2 对 2 小聚氛围更轻松;通过个性化推荐完成线上匹配后,线下见面能够提高对邀约对象更全面的了解。

领域事件其实也可以归纳为领域服务,不过领域服务的事件是幂等的。因为领域服务是无事务的,所以事件也是无副作用的,这样在处理聚合依赖的时候,需要保证他们的最终一致性。

除扫码乘车功能外,“北京一卡通”微信小程序还具有很多便民功能,如一卡通电子发票申领、在线客服、乘车红包、演出票务等服务功能。

拼拼碰碰仍处于跑 MVP 的阶段,暂时没有开始付费验证。但是关于商业模式朱皓贤表示拼拼碰碰的主要收入会与用户碰面次数直接关联,即与用户利益一致。除此之外,因为涉及线下场景,因此为B端导流,收引流费会是另一个思路。

{领域事件

值得一提的是,通过微信小程序,如果下车忘记刷码也可在线补登完成扣费,避免实体卡忘记刷卡而带来的扣除全程公交票价的情况。

数据上,平台已促成超过 1000 人的线下碰面,男女比例 4:6 ,用户平均年龄28岁,90%以上本科及以上学历。其中 70% 的女生选择 2 对 2 碰面,且碰面后用户的 7 日留存在 93 %左右,每周线下碰面的次数一直在翻倍。

将领域中发生的活动建模成一系列的离散事件,每个事件都用领域对象来表示。简而言之,领域事件就是领域中发生的事件。还拿租书为例,一本书被借走了,那么需要产生一个借书订单,并且对于租书者来说,需要能查看自己租书的列表和书籍详情,同时这本书也需要被标记为不能再借出的状态(因为已经被借走了)。这里面bookRent就可以作为一个领域事件来发出。

用户可通过“个人中心——乘车记录——待支付订单”的操作路径在线补登,也可通过“接到小程序推送通知——点击进入补登界面完成操作”的操作完成。据一卡通公司负责人介绍,如果用户下车忘记刷码,每天早上8时,小程序会为用户进行信息推送,提示用户在线完成补登。

在问及用户安全的问题上,朱皓贤表示,滴滴顺风车的事件主因是1对1在封闭的场景,拼拼碰碰只会考虑多人、 公开并有第三方合作伙伴陪同下的场景(如桌游店、咖啡厅等)的形式。未来还会加入类似身份验证等更加可靠的认证体系,保护用户的安全与隐私。

事件的聚合

图片 6

采访的最后,朱皓贤表示,拼拼碰碰的目标是在产品正式上线的第三个季度到第四个季度之间做到100万用户,基于此,团队目前正在寻求天使轮融资,主要用于团队建设与推广运营,以便应对更大规模的增长并丰富线下场景的多元化。

对于上述的事件模型,我们可以创建具有聚合特性的领域事件。这里我们可以把这个事件本身建模成一个聚合(BookRentEvent 对象),并且有自己的持久化方式。唯一标识可以由一组属性决定,在客户方(Client)调用领域服务的时候创建这个领域事件{new bookRentEvent())},并添加到资源库中,然后再通过消息的方式进行发布。发布成功后再回调更新时间状态。但这里需要注意,消息发布最好和事件资源库在相同的上下文,或共享数据源,这样就可以保证事件的成功提交,在不同上下文系统,就需要做全局事务来保证。而唯一标识在这里的作用就是为了防止消息重发或者重复处理。所以订阅方需要检查重复消息,并且忽略。如果是本地上下文的事件,最好提供equals和hashcode 实现。

1什么是北京一卡通微信小程序电子卡?

拼拼碰碰创始人朱皓贤为猎豹移动海外战略及商业初期团队,曾在 Rocket Internet 内部做 foodpanda 香港的创始团队,而 Rocket Internet 是一家以模仿成熟市场成功商业模式, 在新兴市场高效复制的公司; 联合创始人廖婉君为初创企业爱普酷客联合创始人,猎豹移动 Clean Master 技术总监,联发科资深研发与项目管理。

结合刚才的例子,在书籍管理上下文中,书被借走了,那么书籍唯一表示和书的状态(Rent被借出)就可以标识一个事件。这个事件中需要有借书人的信息(如id,nick等),那么在持久化这个事件后,可以post一个Eventbus的本地消息,由用户书籍领域服务监听,更新用户书籍列表等一系列操作。然后再Callback到事件源,更新事件状态,处理成功。如果需要处理事件都在本地上下文,处理起来并不麻烦。

答:北京一卡通微信小程序电子卡是北京市政交通一卡通有限公司与腾讯公司合作推出的一种可以用来乘坐公共交通工具的二维码。用户开通该项服务后,仅需打开“北京一卡通”微信小程序将乘车码对准扫码机具,即可享受扫码乘车的便捷出行体验。

虽然拼拼碰碰的早期 MVP 数据不差,朱皓贤也表示种子用户的反馈良好,但这批种子用户的来源是以豆瓣这单一渠道为主。因此如何一边继续高效的做用户增长,一边保持平台上用户质量会成为摆在团队面前的一个问题;其次为B端引流这一模式还有待验证。

发布领域事件

2.与一卡通其他移动支付方式相比,北京一卡通微信小程序电子卡在使用上有什么特点?

关于陌生人社交,36氪认为,越来越多的社交用户对纯线上的匹配与连接已经失去热情。在用户开始重视交友效率后,会逐渐从纯线上这种费时且不稳定的方式,迁移到面对面的线下交友。

领域事件的发布可以用Observer模式。在本地上下文,也要尽量减少对基础设施或者消息中间件暴露领域模型,所以,需要将本地模型(领域模型)封装成事件的聚合。比如我们不能直接发布一个BookRent聚合的事件,而是一个BookRentEvent,这个Event对象,还会持有一些事件特有的属性,比如可能根据需要,会有occurTime(发生时间),isConsumed(是否已经被处理)。事件发布时,所有订阅方都会同步收到通知。领域事件的主要组件就是publisher和subscriber了。

答:与一卡通其他移动支付方式相比,北京一卡通微信小程序电子卡的最大特点在于“无须下载App、无需进行预充值操作”,所有智能手机用户通过微信小程序即可在线开通,并可享受“先乘车,后付费”的乘车服务。

而线下交友的优势在于,用户之间能够更全面直观的了解对方,对方的谈吐、表情、动作都可以作为评判的标准之一。而且被社交用户诟病的线上线下不同人格的问题也能被解决。毕竟确认过眼神后,才能更好的维持关系,无论线上还是线下。

发送者

3.如何通过北京一卡通微信小程序开通电子卡?

而在交友效率得到提升后,对于团队来说的下一个问题是:如何将这种解决方案快速复制、裂变,并且不损害用户利益,保证用户安全。

发送者本身并不表达一种领域概念,而是作为一种服务的形态。无论用什么技术方式实现,用什么框架,处理事件发送的思路也都可能不尽相同。比如,在web应用中,可以在启动应用的时候处理订阅者向发送者的事件注册(避免注册和处理发送的线程同步问题)。比如可以将关注的事件registe到本地的一个ThreadLocal的publisher List中。应用启动完成后,开始处理领域事件的时候,就可以发送一个事件的聚合。这个事件的聚合是一个事件对象,而不是领域模型中的实体,因为我们要暴露需要暴露的事件给其他上下文,而不是暴露完整的领域对象。如果使用EventBus,我们可以在post的时候,封装一个事件作为参数。

答:用户可通过微信小程序搜索“北京一卡通”,在页面中找到“电子卡”,同意协议并开通免密支付,输入支付密码后即可完成开通,开通后的电子卡将自动加至微信“卡包”中。再次使用时,可下拉微信聊天框选择“北京一卡通”小程序进入,或通过“我”-“卡包”快速调出乘车二维码界面。

目前,市场上并没有一款成功的 O2O 社交平台,类似拼拼碰碰这类模式的项目能否获得用户与资本的双重认可?这会是一门小而美的生意还会是陌生人社交的新战场?欢迎在文章底部留言评论。返回搜狐,查看更多

订阅者

4.开通北京一卡通微信小程序电子卡需要收费或交纳押金吗?

责任编辑:

事件的订阅者可以作为应用服务的一个独立的组件。因为应用服务是在领域逻辑的外层,如果是纯粹的事件驱动,那么订阅者作为一种应用服务,也可以定位成具有单一职责的,负责事件存储的应用服务组件。

答:不需要。智能手机用户可免费开通该项服务。

分布式领域事件

5.北京一卡通微信小程序电子卡的使用范围是什么?

在处理分布式事件中,最重要也是最难处理的就是一致性。消息的延迟,处理的不幂等就会影响领域模型状态的准确性和事件的处理。但是我们在系统间交互的过程中,可以用一些技术方式来达到最终一致性。这其中可能就需要进行事件模型的持久化。处理方式可以

答:目前,通州、昌平、顺义、密云、大兴、平谷等区域500余条公交线路,共计5000余量公交车均已支持该项应用,乘客可通过北京一卡通微信小程序查询具体的开通线路。

1. 领域模型和消息设施共享持久存储的数据源。这种需要事件作为一种本地事件模型存储在和本地领域模型的同一个数据库中。这样保证了本地事务的一致,性能较好,但是不能和其他上下文共享持久化存储。

6.如何使用北京一卡通微信小程序电子卡刷码乘车?

2. 全局XA事务(两阶段提交)来控制。模型和消息的持久化可以分开,但是全局事务性能差,成本高。

答:乘客在使用时需注意将手机二维码对准公交POS机的扫码区,保持约5厘米距离,当机具屏幕显示“扫码成功”后则表示交易完成。需注意的是,由于北京公共交通实行分段计价,乘客通过电子卡二维码乘车时上下车均需扫码。

3. 在领域模型的持久化存储中,单独一块存储区域(单独一张事件表)来存储领域事件。也就是做本地的EventStore。但是需要有一个发布事件的消息机制,消息事件是完全私有的。消息的发送可以交给消息中间件来处理。如果可以的话,还可以将时间存储作为Rest资源。事件就可以以一种存档日志的形式对外发布事件(消息队列,通过消息设施或者中间件发送RabitMQ,MetaQ等)。这样还保证了时间的可追溯性。

7.使用北京一卡通微信小程序电子卡可否享受乘车优惠?

我们使用事件来解耦,是为了考虑尽量避免RPC,简化系统依赖,减少外部服务不可用对系统模型带来的状态影响。所以领域事件强调的是高度自治,但是也需要斟酌,通过事件处理的情况必须是容许延时的,并且消息的接收方需要是一个幂等接收器(可以自幂等,或者对于重复消息的拒绝处理),因为消息是可能重复发送的。}

答:使用北京一卡通微信小程序电子卡可享受与一卡通普通卡相同的乘车优惠。

需要解决的问题

8.无网络状态下,是否可以使用北京一卡通微信小程序电子卡?

分布式的思路和线程同步锁ReentrantLock的思路是一样的。我们也要考虑如以下几个问题:

答:可以。北京一卡通微信小程序电子卡二维码可离线生成,在无网络环境下也可扫码乘车。

  • 死锁的情况。复杂的网络环境下,当加锁成功,后续操作正在处理时,获得锁的节点忽然宕机,无法释放锁的情况。如A在Node1 节点申请到了锁资源,但是Node1宕机,锁一直无法释放,订单没有生成,但是其他用户将无法申请到锁资源。
  • 锁的性能效率。分布式锁不能成为性能瓶颈或者单点故障不能导致业务异常。
  • 如果关键业务,可能需要重入场景,是否设计成可重入锁。这个可以参考下在多线程的情况下,比如ReentrantLock就是一种可重入锁,其内部又提供了公平锁和非公平锁两种实现和应用,本文不继续探讨。带着以上问题,和场景,沿着下文,来一一找到解决方案。

本文由澳门新葡亰娱乐场平台官网发布于互联网,转载请注明出处:享受与一卡通相同优惠,拒绝网聊

关键词:

最火资讯