![Orleans:构建高性能分布式Actor服务](https://wfqqreader-1252317822.image.myqcloud.com/cover/223/44175223/b_44175223.jpg)
上QQ阅读APP看书,第一时间看更新
2.6 案例:自动售货机的库存管理
Grain的状态内聚及虚拟寻址特性非常适合智能家居、安防、线下广告等多终端的服务互联应用。在零售行业中,开发人员仅需实现简单的业务逻辑,即可运用Orleans搭建适用于任意规模的自动售货机网络的库存管理系统。
如图2-7所示,在自动售货终端网络中,各终端通过公有网络与Orleans服务集群进行连接,在用户购买、线下补货时通过调用管理后台服务运行时内部的Grain实例方法增减库存信息,服务管理员可直接在库存管理后台中通过各终端Grain实例进行库存的监测与管理。
![](https://epubservercos.yuewen.com/5DD5C6/23446275701391606/epubprivate/OEBPS/Images/32_02.jpg?sign=1738820168-TSpgCdZHw4XK0bADBAF5TFeCBZreAJmI-0-84b4dadea9d6f9bd6879d725ae4eb892)
•图2-7 基于Orleans的自动售货终端库存管理系统示意图
在Orleans服务端内可以定义以字符串为唯一标识的VendingMachineGrain,每个Vending-MachineGrain的内部通过Orleans持久化状态存储服务维护一个Dictionary<string,int>容器以记录当前售后终端内各类产品的库存,VendingMachineGrain中定义了SellAsync、RestockAsync、ShowInventoryAsync及ListAllInventoriesAsync方法,以对外提供售卖时库存扣减、补货时库存刷新及查询产品库存功能的API。
![](https://epubservercos.yuewen.com/5DD5C6/23446275701391606/epubprivate/OEBPS/Images/33_01.jpg?sign=1738820168-FYzFtCeIvO0Rs6ZMsSIoTS0b0dQl3raz-0-5df7f354f5d6bfbd4d6ee3ef064f1fae)
![](https://epubservercos.yuewen.com/5DD5C6/23446275701391606/epubprivate/OEBPS/Images/34_01.jpg?sign=1738820168-BE6KGtKX80c2lYbHwbUktycKi2mXEkcZ-0-a96b6774e4d1761e8c1ee2998234b488)
自动售货终端只需在售卖及补货操作时通过Orleans Client同步调用上述服务接口,即可完成设备信息的互联与同步。
![](https://epubservercos.yuewen.com/5DD5C6/23446275701391606/epubprivate/OEBPS/Images/34_02.jpg?sign=1738820168-w0mWgaE3THtW4wlRxRkUTzlbsKURpBym-0-e0b10134f41944ae55eec3e7063fd9c2)