Hi Vino,

Thanks for the write up. I've left some comments on google doc, please
check. Thanks.

Best Regards,
Yu


On Thu, 4 Jul 2019 at 15:37, vino yang <yanghua1...@gmail.com> wrote:

> Hi Jiayi,
>
> Thanks for your comments.
>
> It's valuable. I have accepted it and refined my design document.
>
> You can have another review when you have time.
>
> Best,
> Vino
>
> bupt_ljy <bupt_...@163.com> 于2019年7月3日周三 下午2:48写道:
>
> > Hi vino,
> > Big +1 for this.
> >
> > Glad to see new progress on this topic! I’ve left some comments on it.
> >
> >
> > Best Regards,
> >
> > Jiayi Liao
> >
> >  Original Message
> > *Sender:* vino yang<yanghua1...@gmail.com>
> > *Recipient:* Georgi Stoyanov<gstoya...@live.com>
> > *Cc:* dev<dev@flink.apache.org>; user<u...@flink.apache.org>; Stefan
> > Richter<s.rich...@ververica.com>; Aljoscha Krettek<aljos...@apache.org>;
> > kklou...@gmail.com<kklou...@gmail.com>; Stephan Ewen<se...@apache.org>;
> > l...@apache.org<l...@apache.org>; Tzu-Li (Gordon) Tai<
> tzuli...@apache.org>
> > *Date:* Tuesday, Jul 2, 2019 16:45
> > *Subject:* Re: RE: [DISCUSS] Improve Queryable State and introduce
> > aQueryServerProxy component
> >
> > Hi all,
> >
> > In the past, I have tried to further refine the design of this topic
> > thread and wrote a design document to give more detailed design images
> and
> > text description, so that it is more conducive to discussion.[1]
> >
> > Note: The document is not yet completed, for example, the
> "Implementation"
> > section is missing. Therefore, it is still in an open discussion state. I
> > will improve the rest while listening to the opinions of the community.
> >
> > Welcome and appreciate more discussions and feedback.
> >
> > Best,
> > Vino
> >
> > [1]:
> >
> https://docs.google.com/document/d/181qYVIiHQGrc3hCj3QBn1iEHF4bUztdw4XO8VSaf_uI/edit?usp=sharing
> >
> >
> > yanghua1127 <yanghua1...@gmail.com> 于2019年6月7日周五 下午11:32写道:
> >
> >> Hi Georgi,
> >>
> >> Thanks for your feedback. And glad to hear you are using queryable
> state.
> >>
> >> I agree that implementation of option 1 is easier than others. However,
> >> when we design the new architecture we need to consider more aspects
> .e.g.
> >> scalability. So it seems option 3 is more suitable. Actually, some
> >> committers such as Stefan, Gordon and Aljoscha have given me feedback
> and
> >> direction.
> >>
> >> Currently, I am writing the design document. If it is ready to be
> >> presented. I will copy to this thread and we can discuss further
> details.
> >>
> >> ----
> >> Best,
> >> Vino
> >>
> >>
> >> On 2019-06-07 19:03 , Georgi Stoyanov <gstoya...@live.com> Wrote:
> >>
> >> Hi Vino,
> >>
> >>
> >>
> >> I was investigating the current architecture and AFAIK the first
> proposal
> >> will be a lot easier to implement, cause currently JM has the
> information
> >> about the states (where, which etc thanks to KvStateLocationRegistry.
> >> Correct me if I’m wrong)
> >>
> >> We are using the feature and it’s indeed not very cool to iterate trough
> >> ports, check which TM is the responsible one etc etc.
> >>
> >>
> >>
> >> It will be very useful if someone from the committers joins the topic
> and
> >> give us some insights what’s going to happen with that feature.
> >>
> >>
> >>
> >>
> >>
> >> Kind Regards,
> >>
> >> Georgi
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> *From:* vino yang <yanghua1...@gmail.com>
> >> *Sent:* Thursday, April 25, 2019 5:18 PM
> >> *To:* dev <dev@flink.apache.org>; user <u...@flink.apache.org>
> >> *Cc:* Stefan Richter <s.rich...@ververica.com>; Aljoscha Krettek <
> >> aljos...@apache.org>; kklou...@gmail.com
> >> *Subject:* [DISCUSS] Improve Queryable State and introduce a
> >> QueryServerProxy component
> >>
> >>
> >>
> >> Hi all,
> >>
> >>
> >>
> >> I want to share my thought with you about improving the queryable state
> >> and introducing a QueryServerProxy component.
> >>
> >>
> >>
> >> I think the current queryable state's client is hard to use. Because it
> >> needs users to know the TaskManager's address and proxy's port.
> Actually,
> >> some business users who do not have good knowledge about the Flink's
> inner
> >> or runtime in production. However, sometimes they need to query the
> values
> >> of states.
> >>
> >>
> >>
> >> IMO, the reason caused this problem is because of the queryable state's
> >> architecture. Currently, the queryable state clients interact with
> >> query state client proxy components which host on each TaskManager. This
> >> design is difficult to encapsulate the point of change and exposes too
> much
> >> detail to the user.
> >>
> >>
> >>
> >> My personal idea is that we could introduce a really queryable state
> >> server, named e.g. *QueryStateProxyServer* which would delegate all the
> >> query state request and query the local registry then redirect the
> request
> >> to the specific *QueryStateClientProxy*(runs on each TaskManager). The
> >> server is the users really want to care about. And it would make the
> users
> >> ignorant to the TaskManagers' address and proxies' port. The current
> >> *QueryStateClientProxy* would become *QueryStateProxyClient*.
> >>
> >>
> >>
> >> Generally speaking, the roles of the QueryStateProxyServer list below:
> >>
> >>
> >>
> >>    - works as all the query client's proxy to receive all the request
> >>    and send response;
> >>    - a router to redirect the real query requests to the specific proxy
> >>    client;
> >>    - maintain route table registry (state <-> TaskManager,
> >>    TaskManager<->proxy client address)
> >>    - more fine-granted control, such as cache result, ACL, TTL, SLA(rate
> >>    limit) and so on
> >>
> >> About the implementation, there are three opts:
> >>
> >>
> >>
> >> opt 1:
> >>
> >>
> >>
> >> Let the JobManager acts as the query proxy server.
> >>
> >> ·  pros: reuse the exists JM, do not need to introduce a new process can
> >> reduce the complexity;
> >>
> >> ·  cons: would make JM heavy burdens, depends on the query frequency,
> >> may impact on the stability
> >>
> >>
> >>
> >> [image: Screen Shot 2019-04-25 at 5.12.07 PM.png]
> >>
> >>
> >>
> >> opt 2:
> >>
> >>
> >>
> >> Introduce a new component  which runs as a single process and acts as
> the
> >> query proxy server:
> >>
> >>
> >>
> >> ·  pros: reduce the burdens and make the JM more stability
> >>
> >> ·  cons: introduced a new component will make the implementation more
> >> complexity
> >>
> >> [image: Screen Shot 2019-04-25 at 5.14.05 PM.png]
> >>
> >>
> >>
> >> opt 3 (suggestion comes from Stefan Richter):
> >>
> >>
> >>
> >> Combining the two opts, the query server could run as a single entry
> >> point(process) and integrate with JobManager.
> >>
> >>
> >>
> >> If we keep it well encapsulated, the only difference would be how we
> >> register new TMs with the query server in the different scenarios, in
> JM we
> >> might have this information already, in standalone e.g. the TMs be
> started
> >> with the query server address to register. This would give the
> convenience
> >> to start QS with the JM and the flexibility for power user to reduce
> load
> >> on their JM.
> >>
> >>
> >>
> >> IMO, the queryable state is a very valuable feature. It can let users
> >> query some real-time measure results. I hope it will get the attention
> of
> >> the community.
> >>
> >>
> >>
> >> It is just a roughly thought. If it is valuable to the community, I will
> >> give a design draft.
> >>
> >>
> >>
> >> What's your opinion? Any feedback and comment are welcome!
> >>
> >>
> >>
> >> Best,
> >>
> >> Vino.
> >>
> >>
> >>
> >>
>

Reply via email to