Embodiment
Embodiment more described herein take full advantage of sending out notice mechanism, and provide at top layer and to allow to utilize the notice of these sending out notice channels to manage and distributing layer in mobile and desktop developer scale ground and the situation at the right time dispense characteristics.
Some embodiment can comprise the method for carrying out the broadcasting of notice by the distribution of cascade and subregion and delivery system, the quantity of this system minimizes message copy also can expand to very a large amount of targets of sending, and also minimizes the notice average flow time from the inlet to the outlet simultaneously for each independent target.
Some embodiment can comprise that a kind of purpose for system monitoring and client computer and third party's book keeping operation is collected and send statistical information and it is spread the method that is passed to the data warehouse solution.
Some embodiment can comprise a kind of because temporary transient or lasting delivery error situation and temporarily or enduringly target is listed in the method for blacklist.
As the basis, the publish/subscribe architecture that embodiment system uses the Windows Azure service bus that can obtain from the Microsoft in Redmond city to provide, but in various other messaging systems, exist the architecture of similar type.This architecture provides two kinds of abilities of the described realization of the method for being convenient to present: theme and formation.
Formation is the storage organization for message, and it allows to add message (joining the team) and remove message (going out team) with the order identical with adding message with the order of order.Can add and remove message by any amount of concurrent clients, come the Balance Treatment load thereby allow to stabilize the join the team load of side and each recipient who steps out group side.Formation also allows each entity to obtain lock on this information when message is gone out group, thus allow the customer machine to when with message actual deletion or whether it can be reduced back and carry out explicit control in the formation in to the situation of the processing failure of the message that retrieves from formation.
Theme is the individual storage organization with formation, but allows a plurality of concurrent existing ' subscription ', and these subscribe to the isolated filtered view that allows separately the message sequence of joining the team.On the theme each is subscribed to the copy that all produces each message of joining the team, and supposes that the filtercondition that is associated of this subscription mates this message for certain.As a result, the message of the theme of join the team to and have 10 subscription (wherein each subscription with all message of coupling simple ' passing ' condition) will produce altogether 10 message, and each subscribes to a message.As formation, subscription can have a plurality of concurrent consumers, and the balance of the processing load of striding each recipient is provided.
Another basic conception is ' event ', and it is exactly bar message with regard to bottom publish/subscribe architecture aspect.In the context of an embodiment, event is obeyed and a group of management and control is carried out in the use of message text and message attributes is simply retrained.The message text of event generally flows as opaque data block, and anything event data that embodiment thinks generally flows in message attributes, and it is right as one group of key/value of the part of the message of this event of expression.
Each embodiment can be configured to the copy from the information of given incoming event is distributed to be associated with the specific function territory a large amount of ' each in the target 102 ', and do like this for each target 102 in the time of minimum.Target 102 can comprise the address of the equipment of the identifier that is coupled to adapter or application program and be used for the auxiliary data of this reporting system of access or architecture, and wherein this adapter is for the outside architecture of a certain third party's reporting system or certain network-accessible.
Some embodiment can comprise the architecture that is divided into three different processing roles, and these roles are described in more detail below and can understand with reference to figure 1.As among Fig. 1 by ' 1 ' ..., and ' n ' shown in, each that process among the role can have one or more examples of this processing role.Note, when being applied to process the role, in each situation, use ' n ' should be considered to different from another situation, this means that each that process among the role needn't have the example of equal number.' distribution engine ' 112 roles accept event and they are packaged in comprising the transmission list of respectively organizing target 102 (referring to the transmission list 128-1 among Fig. 2 for example).' delivery engine ' 108 accepted these bags and process to be transmitted list to be delivered to by each represented network site of target 102.Provide the outside API of management objectives 102 by management service 142 shown ' role of manager ', and be responsible for accepting statistics and error data and responsible processing the/these data of storage from delivery engine 108.
Data flow be anchored on ' distribution theme 144 ' on, each event is submitted in this distribution theme for distribution.The event of submitting to is to carry out mark with the action scope that message attributes is come to be associated with them, and this can be one of above-mentioned constraint that event and origination message are distinguished.
In the example shown, ' distribution subregion 120 ' has one and passes (filtering) subscription distribution theme 144 for each.' distribution subregion ' is to be responsible for to the subset distribution of the target 102 of given action scope and the isolated resource collection of delivery notification.The copy that sends to each event of distribution in the theme is actually simultaneously available to the subscription that the distribution subregion of all concurrent configurations is associated by them, thereby allows the parallelization of distribute work.
The parallelization that reaches by subregion (partitioning) helps to realize timely distribution.For understanding this point, consider to have the action scope of 10,000,000 targets 102.If the data of target are maintained in the storage without subregion, then this system must sequentially travel through single large database result set, if perhaps result set is to use the subregion that same storage is carried out to inquire about to obtain, then for the throughput of obtaining target data the throughput upper limit of forward direction (fronting) the network gateway architecture of given at least storage is controlled, as a result, the stand-by period of sending that delivery of notifications is recorded in the target 102 that occurs very lately in the given result set to its description may be not satisfied.
On the contrary, if 10,000,000 targets 102 are distributed in 1000 storages, each storage keeps 10000 target records, and these storages are matched with the dedicated computing architecture (' distribution engine 122 ' with ' described herein delivery engine 108 ') of carrying out inquiry and result with the form of subregion as described here, then to goal description obtain can a very large batch total calculate and Internet resources on parallelization, thereby reduce significantly when distributing all events from distribute first to the measured time difference of last event.
The actual quantity of distribution subregion technically without limits.Its scope can be from single subregion to greater than one any amount of subregion.
In the example shown, in case the distribution subregion 120 ' distribution engine 122 ' has obtained event 104, it at first calculates the size of event data and calculates subsequently the size that transmits list 128, and this can calculate based on the admissible maximum message size of event size and bottom messaging system and the increment between the smaller in the absolute size upper limit.Come as follows the size of restriction event: ' transmission list ' data that exist the headroom of a certain minimum to hold.
Transmitting list 128 is to comprise the tabulation that target 102 is described.Transmit list and created by the inquiry of searching of the target 102 that keeps in the storage 124 of subregion being carried out the action scope of these events of coupling by distribution engine 122, dwindle all targets 102 that one group of other condition of selection is complementary thereby return with the action scope of this event with based on the filtercondition of event data.Each embodiment can comprise the result is restricted to the time window condition that is considered to effective target 102 at current time, this means that the current UTC time is in the beginning that comprises in the goal description record/end window effective time, and other filterconditions.This facility is used to pipe off, and this describes in this article after a while.When the traversal lookup result, this engine creates the copy of event 104, with will transmitting list 128 and be filled into largest amount from storing the goal description that retrieves 124, and subsequently with the event bag of gained with transmit list ' the sending in the formation 130 ' of this subregion of joining the team.
Transmit the list technology and guarantee that from distribution engine 122 to delivery engine the event flow velocity of 108 event is higher than the real messages flow velocity on the underlying basis framework, for example mean at 30 goal descriptions can be bundled to together with event data in the situation about transmitting in the list 128 that the flow velocity that event/target is right is event/target to directly being grouped into 30 times of situation in the message.
Delivery engine 108 is the consumers from the event of sending
formation 130/transmission list bag 126.The role of
delivery engine 108 will make these contract out team, and
event 104 is delivered to transmits the institute that lists in the
list 128 on purpose.The adapter of sending usually by event message being formatted into the notification message that the respective objects architecture understands occurs.For example, notification message can be by being used for
The MPNS form of 7 phones, by the APN(apple sending out notice that is used for iOS equipment) form, by the C2DM(cloud that is used for Android equipment to the equipment message transmitting-receiving) form, by the JSON(Java scripting object notation for the browser on the equipment) form, by the HTTP(HTML (Hypertext Markup Language)) etc. send.
Delivery engine 108 makes usually sends in each independently parallelization on the target 102, and makes and send serialization on each target 102 of sharing the action scope of being implemented by the target architecture.The example of a rear situation is that the special adapter in the delivery engine can be selected to be all events of target by the particular targeted application program that single network connect to send on the specific notification platform.
Use is sent formation 130 distribution engine 122 and delivery engine 108 is removed coupling, with the independent telescope that allows delivery engine 108 and avoid sending slowing down and return back to the distribution inquiry/packing stage and block and distribute the inquiry/packing stage.
Each distribution subregion 120 can have to observe concomitantly sends any amount of delivery engine example of formation 130.The length of sending formation 130 can be used to determine that how many delivery engine are movable concomitantly.If queue length surpasses specific threshold, then can add new delivery engine example to subregion 120 and send throughput to increase.
Distribution subregion 120 and the distribution and the delivery engine example that are associated can stretch in fact unlimited mode, to reach large-scale Optimal Parallel.If the target architecture can receive and in parallel mode to 1,000,000 event request of each device forwards, then described system can stride its send architecture and come Distribution Events---may utilize network infrastructure and the bandwidth of striding each data center---with submit to event to make the target architecture saturated for as the target architecture underloading and given any authorize send the mode that is delivered in time all required targets 102 being allowed under the limit.
Via its corresponding architecture adapter with message delivery during to target 102, in certain embodiments, these system log (SYSLOG) various statistic clauses and subclauses.This comprises receiving sends bag and sends out the time period that measures of the duration between any single message and the time period that measures of the duration of actual transmit operation.Another part of statistical information is to send the designator that is success or failure.This information be collected in the delivery engine 108 and on the basis of every action scope and the basis of every target-application program roll up mean value.' destination application ' is the compartment identifier of the specific purposes that are used for the statistical information accumulation introduced.The mean value that calculates is sent to sending state formation 146 with the defined time interval.This formation is consumed by (group) worker in the management service 142, and management service is submitted to data warehouse with event data for various purposes.These purposes can comprise that except operation supervise and control its tenant who sends event of subtend keeps accounts and/or statistical information is open to the third party book keeping operation of tenant for themselves.
When detecting delivery error, these mistakes are classified into temporary transient and lasting erroneous condition.The temporary error situation can comprise that for example disapproving network failure or the indication that this system reaches the delivery sites of target architecture has temporarily reached the target architecture report of sending limit.Lasting erroneous condition can comprise the authenticated/authorized mistake on the target architecture for example or other mistakes that can not in the situation that not have manually intervention, restore and wherein the target architecture report that this target is no longer available or do not want to accept on lasting basis the erroneous condition of message.In case be classified, error reporting just is submitted to sends fault formation 148.For the temporary error situation, this mistake also can comprise absolute UTC timestamp, until till the expection of this erroneous condition will be solved.Simultaneously, for any further local transmit that this delivery engine example carries out, this target is piped off in this locality by destination adapter.This blacklist also can comprise timestamp.
Sending fault formation 148 is consumed by one among the role of manager (group) worker.Lasting mistake can be so that respective objects immediately deletion from its corresponding distribution partitioned storage 124 that the role of manager can access.' deletion ' mean that this record is removed really or alternatively ' end ' time stamp setting by the validity time period that will record become this wrong timestamp to make this record only be moved out of the visual field of searching inquiry.The temporary error situation can so that target during indicated time period of this mistake, be deactivated.Can by finishing inactively with moving on to the indicated timestamp of this mistake on the beginning of validity time period of target, expect that at this indicated timestamp place this erroneous condition will restore.
With reference now to Fig. 2,, shows the diagram of replacement.As mentioned above, each embodiment therein individual event be dispersed in a plurality of (and may be a large amount of) end user's the message emanation system and be particularly useful.Such example is shown in Figure 2.Fig. 2 shows the example that is delivered to a large amount of different targets from a large amount of not information of homology.In some instances, can be used to create the individual event that is delivered to a large amount of targets from the information of single source or the information of assembling from a plurality of sources.In certain embodiments, this can realize with the technology of distributing shown in Figure 2.
Fig. 2 shows source 116.To discuss after a while such as this paper, each embodiment can utilize and obtain subregion 140.Each that obtain in the subregion 140 can comprise a plurality of sources 116.A large amount of and various sources 116 may be arranged.Source 116 provides information.These information can comprise such as but not limited to Email, text message, stock quotation, in real time race score, news are upgraded in real time, etc.
Fig. 2 shows each subregion and comprises and obtain engine, obtains engine 118 such as illustrative.Obtain engine 118 from the source 116 collection information, and become event next life based on this information.In example shown in Figure 2, a plurality of events are illustrated as generating with each source by obtaining engine.Use case 104-1 describes.In certain embodiments, event 104-1 can come standardization as explained below like that.Obtain engine 118 and can be the service of collecting information such as the source 116 on the networks such as internet, from this network.
Fig. 2 shows event 104-1 and is sent to distribution theme 144.Distribution theme 144 distributes event to a plurality of distribution subregions.Distribution subregion 120-1 is used as the analog of all distribution subregions.Each is distributed subregion and serves separately by subscribing to represented a plurality of end users or equipment.The quantity of the subscription of distribution section post service can be different from other quantity of distributing the section post service.In certain embodiments, the quantity of the subscription of section post service can be depending on the ability of distribution subregion.As an alternative or supplement, the distribution subregion can be selected with service-user based on the logic OR geographical proximity degree with the end user.This can allow in mode more timely alert delivery to the end user.
In the example shown, distribution subregion 120-1 comprises distribution engine 122-1.Distribution engine 122-1 advisory data storehouse 124-1.Database 124-1 comprises information and the details of sending target 102 about being associated about subscribing to.Particularly, this database can comprise information, such as the network address of the platform of describing target 102, target 102 employed application programs, target 102, use the end user's of target 102 the information of user preference etc.Information among the 124-1 of usage data storehouse, distribution engine 122-1 makes up bag 126-1, wrap wherein that 126-1 comprises event 104(or at least from the information of event 104) and identify in the target 102 will be with the transmission list 128-1 of a plurality of targets 102 of sending to as notice from the information of event 104-1.Bag 126-1 is placed among the formation 130-1 subsequently.
Distribution subregion 120-1 can comprise a plurality of delivery engine.Delivery engine make each the bag from formation 130-1, go out team and with delivery of notifications to target 102.For example, delivery engine 108-1 can take out bag 126-1 and event 104 information are sent to and transmit the target 102 that identifies among the list 128-1 from formation 130-1.Thereby what comprise event 104-1 information notifies 134 can send to target 102 from each distribution subregion with the multiple different form that is applicable to different target 102 and is exclusively used in each independent target 102.This allows to create for each independent target 102 from public accident 104-1 in the edge of delivery system and has carried out individual individually notifying 134, but not transports a large amount of individual notices by this delivery system.
Below discuss and now relate to several different methods and the method action that to carry out.Although show each method action with the certain order discussion or in order to the flow chart that certain order occurs, unless clear otherwise do not need certain order, or before carrying out this action, finish and need certain order because an action depends on another action.
With reference now to Fig. 3,, shows method 300.The method can be implemented in computing environment.The method comprise in the mode that can minimize message copy and Message Waiting Time with the action of case distribution to a large amount of event consumer.The method comprises determines that an event should be sent to one group of particular consumer (action 302).For example, as shown in Figure 2, event 104 need to be sent to one or more in the target 102.
The method comprises that also copying this event and the copy that each is independent offers a plurality of distribution subregions (action 304).For example, as shown in Figure 2, the theme place copies to a plurality of distribution subregions with this event in distribution, as distribution subregion 120-1 and shown in other distribution subregions.
The method also is included in each place that respectively distributes in the subregion, and the copy of event is packed to create a plurality of bags (action 306) of sending with a plurality of transmission lists.Transmit list and can describe a plurality of independent consumer who is intended to receive this event.The 126-1 place of the example of sending bag like this in Fig. 2 illustrates.
The method also comprises using sends bag with case distribution each independent consumer (action 308) to appointment in the transmission list.For example, as shown in Figure 2, delivery engine 108-1 can use transmission list 128-1 that event 104 is delivered to each target 102.
Some embodiment that can implementation method 300 wherein determine each subregion based on the subregion ability.For example, will can be determined by ability the quantity of the target of its Distribution Events by the distribution subregion, as being determined by factors such as system hardware, network connection, present load.
Some embodiment that can implementation method 300 wherein determine each subregion based on the place.For example, can distribute geographically or the target contiguous with this subregion in logic to subregion (such as subregion 120-1).
Some embodiment that can implementation method 300 wherein transmit the Rule and constraint that the list definition is used for how event being delivered to each independent consumer.For example, transmit the filter that list can comprise consumer's special use.In one example, consumer (that is, targeted customer) can define about receiving or not receive the preference of the event of what type.This information can be included in and transmit in the list, so that can be made in the edge of delivery system by delivery engine about the decision-making that whether will send event.
In a replacement or additional embodiment, transmitting list can the define grid location rule.For example, transmit list and can comprise the network path that arrives specific objective.
In a replacement or additional embodiment, transmit list and can comprise security credence information.For example, may need security credence for the event that will send.Particularly, the application program on the equipment may be expected some security protocol information when communicating with the server that event data is provided.This security protocol information can comprise guaranteeing that event is correctly sent by delivery engine 108-1.
In a replacement or additional embodiment, transmit list and can comprise the rule of primitive event data-mapping to the desired form of consumer.For example, this event can be common version, but transmits the platform that list can objective definition.This allows delivery engine 108-1 with the specific format that is suitable for defined platform event 104 to be formatd before event is delivered to target.
Each method can be by comprising one or more processors and implementing such as the computer system of the computer-readable mediums such as computer storage.Particularly, computer storage can be stored computer executable instructions, these instructions when being carried out by one or more processors so that the various functions such as each action described in each embodiment be performed.
Various embodiments of the present invention can comprise or utilize special use or the all-purpose computer that comprises computer hardware that this will discuss in more detail hereinafter.Each embodiment in the scope of the invention also comprises physics and other computer-readable mediums for carrying or storage computer executable instructions and/or data structure.Such computer-readable medium can be can be by any usable medium of universal or special computer system accesses.The computer-readable medium of storage computer executable instructions is physical storage medium.The computer-readable medium of load capacity calculation machine executable instruction is transmission medium.Thus, and unrestricted, various embodiments of the present invention can comprise at least two kinds of remarkable different computer-readable mediums as example: physical computer readable storage medium storing program for executing and transmission computer-readable medium.
The physical computer storage medium comprise RAM, ROM, EEPROM, CD-ROM or other optical disc storage (such as CD, DVD etc.), disk storage or other magnetic storage apparatus or can be used for storing computer executable instructions or data structure form required program code devices and can be by any other medium of universal or special computer access.
" network " is defined as allowing one or more data link of transmission electronic data between computer system and/or module and/or other electronic equipments.When information exchange crosses that network or another communication connection (hardwired, wireless or hardwired or wireless combination) is transmitted or when offering computer, this computer should connect and suitably was considered as transmission medium.Transmission medium can comprise the required program code devices that can be used for carrying computer executable instructions or data structure form and can be by network and/or the data link of universal or special computer access.The combination of above medium also is included in the scope of computer-readable medium.
In addition, when arriving various computer system component, the program code devices that exists with the form of the executable instruction of computer or data structure can automatically be transferred to physical computer readable storage medium storing program for executing (perhaps vice versa) from the transmission computer-readable medium.For example, the computer executable instructions or the data structure that receive by network or data link (for example can be buffered in Network Interface Module, " NIC ") in RAM in, then finally be sent to the computer-readable physical storage medium of the more not volatibility of computer system RAM and/or computer systems division.Therefore, the computer-readable physical storage medium can be included in equally (or even main) and utilizes in the computer system component of transmission medium.
Computer executable instructions comprises, for example makes all-purpose computer, special-purpose computer or dedicated treatment facility carry out the instruction and data of a certain function or certain group function.Computer executable instructions can be for example binary code, the intermediate format instructions such as assembler language or even source code.Although with the special-purpose language description of architectural feature and/or method action this theme, be appreciated that subject matter defined in the appended claims is not necessarily limited to above-mentioned feature or action.On the contrary, above-mentioned feature and action are as the exemplary forms that realizes claim and disclosed.
It should be appreciated by those skilled in the art that, the present invention can put into practice in having the network computing environment of being permitted eurypalynous computer system configurations, these computer system configurations comprise personal computer, desktop computer, laptop computer, message handling device, portable equipment, multicomputer system, based on microprocessor or programmable consumer electronic device, network PC, minicom, mainframe computer, mobile phone, PDA, beep-pager, router, switch etc.The present invention also can pass through to implement in the distributed system environment that the local and remote computer system of network linking (perhaps by hardwired data link, wireless data link, the perhaps combination by hardwired and wireless data link) both executes the task therein.In distributed system environment, program module can be arranged in local and remote memory storage device.
The present invention can be embodied as other concrete forms and not deviate from its spirit or feature.It only is illustrative and nonrestrictive that described embodiment should be considered in all respects.Therefore, scope of the present invention is by appended claims but not aforementioned description indication.The implication and the interior change of scope that fall into the equivalents of claims are contained by the scope of claims.