In the past year or so, I have focused my energy on the development of Push system and put a lot of effort into it. However, DURING the past year or so, I have been busy writing codes and neglected to summarize them. I would like to take this opportunity to review and summarize the relevant design of the system, hoping to be helpful to myself and readers.

concept

Push: a system in which a server actively pushes messages to a user’s App. Push from the user’s perspective

  • Outside the App: the main display form is mobile phone notification (mobile phone system function, fixed style).
  • Inside App: display can be customized according to the needs of the display style, all kinds of Pop

From the technical point of view, the active push is mainly data, which can be used as the above display, or push some data that does not need to display internal processing to the client, but the ultimate goal is to user experience.

architecture

The elements contained in the initial state of the Push system are only sender, system channel, and receiver.

Sender: the person who produces the pushed content and the way of producing the content System channel: the channel that reaches the users of the produced content, which can be regarded as the core of Push system

  • It can connect to various mobile phone manufacturers and deliver the user’s device to the manufacturer when it is offline
  • It is a long connection channel between the self-built server and the user App, which can directly reach the user through the self-built channel when online

Recipient: the user, the content is displayed on the user’s phone

This is certainly a bit of a simplification, but there’s a lot more to it than that, like sending 100 million users at a time? On the system, the crowd needs to be divided into different machines to deal with this matter, and it is best to send gray scale. If there is a certain pressure on the system, it also needs to limit the flow. Of course, there are certain monitoring measures for the follow-up effect, real-time data performance.

  • Big data processing: Task distribution
  • Concurrent processing: gray scale, limited current
  • Data monitoring: Data platform

Of course there are some things that can be done on the operational side, to reduce risk, to add some approval flows, to control the data of all the sent content, and to support a lot of businesses that need to use channels outside of operations.

  • Content system: All user-accessible content
  • Open platform: system functions external services, support horizontal business
  • Approval flow: protect system security, prevent some arbitrary operations

If the number of users is large, pure manual way is certainly unable to complete, need some fine control, personalized service, personalized content, personalized time. At this time, various entrances of the system are preempting channel resources, but also need to do some priority allocation of the channel, some monitoring alarm.

At this point, the general elements are basically available. What can be done is to polish some details, as well as the responsibilities of components, and make some decisions:

  • Define operational workflow through the system
  • The whole open platform, the ease of use of the operating platform
  • Stability and expansibility of the system; Some pressure measurement link transformation, model design. What else can a system be besides Push?

Service composition

Some of the most important services or platforms are:

  • Content platform
    • Content security tools
  • Approval Flow platform
  • Algorithm platform
  • Data platform
  • Long connection platform
  • Configuration center
  • Monitoring alarm center
  • .

Technology USES

Main technologies used:

  • Caching, limiting traffic, degrade
  • Configuration center, message queuing, scheduling center, cluster storage, RPC calls, log management
  • Real-time computing platform, offline computing platform
  • Knowledge of multithreading, some design patterns

idea

It is not technically sophisticated, mainly because of the large user base, which increases the complexity of the system to some extent. In terms of technology, there are corresponding internal platforms that encapsulate the technical difficulties, and the real technical difficulties are dealt with at the bottom or in the middleware side.

Business development is now about clarifying business priorities, identifying technical obstacles, and moving projects forward. Analytical and social skills are more important than technical skills.

Of course, because I am a technology, I still can’t stop learning and exploring technology.

The last

As time is limited, I have mentioned all the impressive things I can think of in Push, hoping to be helpful to readers.